В этом примере показано, как регистрировать данные изображения и просматривать записанные данные.
Перед регистрацией данных изображения из устройства получения изображения можно просматривать в реальном времени с помощью функции PREVIEW. При вызове функции PREVIEW откроется окно предварительного просмотра. Чтобы закрыть окно предварительного просмотра, используйте функцию CLOSEPREVIEW.
% Access an image acquisition device. vidobj = videoinput('winvideo', 1);
% Open the preview window.
preview(vidobj)
Для получения одного кадра используйте функцию GETSNAPSHOT.
snapshot = getsnapshot(vidobj);
% Display the frame in a figure window.
imagesc(snapshot)

Чтобы указать количество кадров для регистрации при запуске, настройте свойство FramesPerTrigger объекта ввода видео.
% Configure the number of frames to log upon triggering.
vidobj.FramesPerTrigger = 50;
Перед регистрацией данных должен быть запущен объект сбора изображений. Чтобы инициировать получение, используйте функцию START.
start(vidobj)
% Notice that the number of frames being logged to memory ...
numAvail = vidobj.FramesAvailable
numAvail =
7
% ... is increasing ...
numAvail = vidobj.FramesAvailable
numAvail =
14
% ... over time.
numAvail = vidobj.FramesAvailable
numAvail =
21
Чтобы извлечь записанные данные из памяти, используйте функцию GETDATA с объектом ввода видео и количеством извлекаемых кадров.
% Retrieve some of the logged frames.
imageData = getdata(vidobj, 30);
% Notice the number of frames remaining in memory.
numAvail = vidobj.FramesAvailable
numAvail =
20
% Display the last frame extracted from memory.
imagesc(imageData(:,:,:,30))

% Wait for the acquisition to finish.
wait(vidobj);
Чтобы непрерывно получать данные, настройте свойство FramesPerTrigger на бесконечность. При запуске данные будут регистрироваться до тех пор, пока не прекратится работа объекта ввода видео. Чтобы остановить запуск объекта, используйте функцию STOP.
vidobj.FramesPerTrigger = inf;
% Initiate the acquisition. start(vidobj) % Notice the number of frames in memory. numAvail = vidobj.FramesAvailable
numAvail =
6
% Loop through till 10 frames are acquired while(numAvail<=10) numAvail = vidobj.FramesAvailable; end
% Stop the acquisition.
stop(vidobj)
% View the total number of frames that were logged before stopping.
numAcquired = vidobj.FramesAcquired;
numAcquired =
10
% Retrieve all logged data.
imageData = getdata(vidobj, numAcquired);
% Display one of the logged frames.
imagesc(imageData(:,:,:,numAcquired))

Чтобы просмотреть последние данные изображения, не извлекая их из памяти, используйте функцию PEEKDATA с объектом ввода видео и количеством кадров для просмотра. Просмотр зарегистрированных данных с помощью PEEKDATA не приведет к удалению данных из памяти.
% Configure the number of frames to log upon triggering.
vidobj.FramesPerTrigger = 35;
% Initiate the acquisition.
start(vidobj)
% Wait for the acquisition to finish.
wait(vidobj, 3);
% Verify the number of frames logged to memory.
numAvail = vidobj.FramesAvailable
numAvail =
35
% Access the logged data without extracting them from memory.
imageData = peekdata(vidobj, numAvail);
% Verify that all logged frames are still available in memory.
numFramesAvailable = vidobj.FramesAvailable
numFramesAvailable =
35
Как только объект ввода видео больше не требуется, удалите и очистите связанную переменную.
delete(vidobj)
clear vidobj