Логгирование данных в памяти

В этом примере показано, как записать данные изображения и просмотреть записанные данные.

Предварительный просмотр данных

Перед регистрацией данных изображения с устройства сбора изображений можно просмотреть в режиме реального времени с помощью функции 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