No BSD License  

Highlights from
FireWire Vision Tools

image thumbnail
from FireWire Vision Tools by Frank Wornle
A simple MATLAB interface to "FireWire Digital Cameras" and the Color Machine Vision algorithms "CMV

test(varargin)
% test program to continiously capture pictures from the camera and
% classify it using CMVISION
%
% try..
% >> test
%
% ... or
%
% >> test(2, 100, 100, 50, 200)

function test(varargin)

supportedModes = { ...
	'YUV444 (160x120, 30 fps)', ...
	'YUV422 (320x240, 30 fps)', ...
	'YUV411 (640x480, 30 fps)', ...
	'YUV422 (640x480, 15 fps)', ...
	'RGB8 (640x480, 15 fps)', ...
	'Y8 (640x480, 30 fps)', ...
	'Y16 (640x480, 15 fps)' ...
    };

if(isempty(varargin))
    disp('Image type not specified - using YUV as the default');
    mode = 2;			% default mode: YUV411 (640x320, 30 fps)
    myWidth  = -1;      % default width (max)
    myHeight = -1;      % default height (max)
    myOrigX  = -1;      % default origin-x (0)
    myOrigY  = -1;      % default origin-y (0)
elseif(nargin == 1 && isnumeric(varargin{1}))
    mode = varargin{1};
    myWidth  = -1;      % default width (max)
    myHeight = -1;      % default height (max)
    myOrigX  = -1;      % default origin-x (0)
    myOrigY  = -1;      % default origin-y (0)
elseif(nargin == 3 && isnumeric(varargin{1}) && isnumeric(varargin{2}) && isnumeric(varargin{3}))
    mode = varargin{1};
    myWidth  = varargin{2};
    myHeight = varargin{3};
    myOrigX  = -1;      % default origin-x (0)
    myOrigY  = -1;      % default origin-y (0)
elseif(nargin == 5 && isnumeric(varargin{1}) && isnumeric(varargin{2}) && isnumeric(varargin{3}) ...
                                             && isnumeric(varargin{4}) && isnumeric(varargin{5}))
    mode = varargin{1};
    myWidth  = varargin{2};
    myHeight = varargin{3};
    myOrigX  = varargin{4};
    myOrigY  = varargin{5};
end

if(mode == -1)
    
    % switch camera off
    capClassify(-1);
    
else

    % ensure we can exit from the while(1) loop gracefully...
    figure
    evalin('base', 'run = 1;');
    set(gcf, 'CloseRequestFcn', 'evalin(''base'', ''run = 0;'');');

    run = 1;
    while(run)
        
        try
            % verbosity: on (3rd call-up parameter)
            %image(capClassify(mode, 'testcolors.txt', 1, myWidth, myHeight, myOrigX, myOrigY));
            image(capClassify(mode, 'testcolors.txt', 0, myWidth, myHeight, myOrigX, myOrigY));
        catch
            % catch driver errors (e.g. unsupported modes)
            set(gcf, 'CloseRequestFcn', 'closereq');
            close all
            rethrow(lasterror)
        end

        % tell the user what to do (eg. ALT+F4 to exit)
        title(['MODE: ' supportedModes{mode+1} ' -- Close figure window to exit (e.g. ALT+F4)'])
        axis image
        drawnow
        
        % fetch 'run' from 'base' WS
        run = evalin('base', 'run');
        
    end

end

% switch camera off...
capClassify(-1);
set(gcf, 'CloseRequestFcn', 'closereq');
close all

Contact us at files@mathworks.com