В этом примере показано, как использовать функцию GETSNAPSHOT. Функция GETSNAPSHOT позволяет быстро получить один видеокадр.
Большинство взаимодействий с Image Acquisition Toolbox осуществляется через объект входа видео. Эти объекты создаются с помощью команды VIDEOINPUT. Этот пример использует веб-камеру, доступ к которой осуществляется через адаптер «winvideo» тулбокса.
vidobj = videoinput('winvideo');
Чтобы получить одну систему координат, используйте функцию GETSNAPSHOT.
snapshot = getsnapshot(vidobj);
% Display the frame in a figure window.
imagesc(snapshot)
Общая задача - неоднократно получать одно изображение, обрабатывать его, а затем хранить результат. Для этого GETSNAPSHOT можно вызвать в цикле.
for i = 1:5 snapshot = getsnapshot(vidobj); imagesc(snapshot); end
Функция GETSNAPSHOT выполняет большую работу при вызове. Он должен подключиться к устройству, сконфигурировать его, запустить сбор, получить одну систему координат, остановить сбор, а затем закрыть устройство. Это означает, что получение одной системы координат может занять значительно больше времени, чем ожидалось бы на основе частоты систем координат камеры. Чтобы проиллюстрировать это, вызовите GETSNAPSHOT в цикле.
% Measure the time to acquire 20 frames. tic for i = 1:20 snapshot = getsnapshot(vidobj); end elapsedTime = toc % Compute the time per frame and effective frame rate. timePerFrame = elapsedTime/20 effectiveFrameRate = 1/timePerFrame
elapsedTime = 21.2434 timePerFrame = 1.0622 effectiveFrameRate = 0.9415
Следующий пример иллюстрирует более эффективный способ выполнения цикла.
Можно избежать накладных расходов GETSNAPSHOT, описанных в предыдущей настройке, используя ручной режим запуска объекта videoinput. Ручной режим запуска позволяет тулбоксу подключаться и конфигурировать устройство в одно время без регистрации данных в памяти. Это означает, что системы координат могут быть возвращены в MATLAB ® с меньшей задержкой .
% Configure the object for manual trigger mode. triggerconfig(vidobj, 'manual'); % Now that the device is configured for manual triggering, call START. % This will cause the device to send data back to MATLAB, but will not log % frames to memory at this point. start(vidobj) % Measure the time to acquire 20 frames. tic for i = 1:20 snapshot = getsnapshot(vidobj); end elapsedTime = toc % Compute the time per frame and effective frame rate. timePerFrame = elapsedTime/20 effectiveFrameRate = 1/timePerFrame % Call the STOP function to stop the device. stop(vidobj)
elapsedTime = 1.4811 timePerFrame = 0.0741 effectiveFrameRate = 13.5031
Вы можете увидеть, что истекшее время с помощью ручного запуска намного меньше, чем в предыдущем примере.
Как только объект входа видео больше не нужен, удалите связанную переменную.
delete(vidobj)