В то время как объект ввода видео запускается, можно регистрировать данные изображения, получаемые к дисковому файлу. Журналирование данных изображения к диску обеспечивает запись ваших данных.
Для лучшей производительности, регистрируя к диску требует объекта MATLAB® VideoWriter
, который является функцией MATLAB, не функцией Image Acquisition Toolbox™. После того, как вы создадите и сконфигурируете объект VideoWriter
, предоставьте его свойству DiskLogger
объекта videoinput
.
VideoWriter
обеспечивает много различных профилей, которые регистрируют данные в различных форматах. Следующий пример использует профиль Motion JPEG 2000, который может регистрировать одно-полосы (полутоновые) данные, а также многобайтовые данные. Поддерживаемые профили:
'Motion JPEG 2000'
— Сжатый файл Motion JPEG 2000.
'Archival'
— Файл Motion JPEG 2000 со сжатием без потерь.
'Motion JPEG AVI'
— Сжатый файл AVI с помощью кодека Движущегося JPEG.
'Uncompressed AVI'
— Несжатый файл AVI с видео RGB24
.
'MPEG-4'
— Сжатый файл MPEG-4 с кодированием H.264 (системы с Windows 7 или macOS 10.7 и позже).
'Grayscale AVI'
— Несжатый файл AVI с полутоновым видео. Только используемый для монохромных устройств.
'Indexed AVI'
— Несжатый файл AVI с индексируемым видео. Только используемый для монохромных устройств.
Этот пример использует устройство Видения GigE в полутоновом формате (Mono10
).
Создайте объект ввода видео, что доступы устройство получения изображений Видения GigE и используют полутоновый формат на уровне 10 бит на пиксель.
vidobj = videoinput('gige', 1, 'Mono10');
Можно регистрировать полученные данные к памяти к диску или обоим. По умолчанию данные регистрируются к памяти. Чтобы изменить режим журналирования на диск, сконфигурируйте свойство LoggingMode
объекта ввода видео.
vidobj.LoggingMode = 'disk'
Создайте объект VideoWriter с набором профиля к Motion JPEG 2000.
logfile = VideoWriter('logfile.mj2, 'Motion JPEG 2000')
Сконфигурируйте объект ввода видео использовать объект VideoWriter
.
vidobj.DiskLogger = logfile;
Теперь, когда объект ввода видео сконфигурирован для регистрации данных к файлу Motion JPEG 2000, инициируйте приобретение.
start(vidobj)
Ожидайте приобретения, чтобы закончиться.
wait(vidobj, 5)
При журналировании больших объемов данных к диску запись на диск иногда отстает от приобретения. Чтобы определить, записаны ли все кадры в диск, можно опционально использовать свойство DiskLoggerFrameCount
.
while (vidobj.FramesAcquired ~= vidobj.DiskLoggerFrameCount) pause(.1) end
Можно проверить, что свойства FramesAcquired
и DiskLoggerFrameCount
имеют идентичные значения при помощи этих команд и сравнения вывода.
vidobj.FramesAcquired vidobj.DiskLoggerFrameCount
Когда объект ввода видео больше не будет необходим, удалите его и очистите его от рабочей области.
delete(vidobj) clear vidobj
Отметьте следующее при использовании VideoWriter.
Вы не должны удалять объект ввода видео, пока журналирование не было завершено, как обозначено свойством DiskLoggerFrameCount
, равняющимся свойству FramesAcquired
. Выполнение так заставит дисковое журналирование останавливаться безо всех регистрируемых данных.
Если ЗАПУСКАЮТСЯ, называется многократно, не предоставляя новый объект VideoWriter, содержимое предыдущего файла будет стерто, когда ЗАПУСТЯТСЯ, называется.
Если объект VideoWriter был передан свойству DiskLogger
, вы не должны изменять его.