Этот пример показывает, как сконфигурировать свойства журналирования для дискового журналирования и затем инициировать приобретение, чтобы регистрировать.
Данные, полученные от устройства получения изображений, могут регистрироваться к памяти к диску или обоим. По умолчанию данные регистрируются к памяти. Чтобы изменить режим журналирования, сконфигурируйте свойство LoggingMode
объекта ввода видео.
% Access an image acquisition device, using a grayscale video format with % 10 bits per pixel. vidobj = videoinput('gige', 1, 'Mono10'); % View the default logging mode. currentLoggingMode = vidobj.LoggingMode;
currentLoggingMode = memory
% List all possible logging modes. set(vidobj, 'LoggingMode')
[ {memory} | disk | disk&memory ]
% Configure the logging mode to disk. vidobj.LoggingMode = 'disk'; % Verify the configuration. currentLoggingMode = vidobj.LoggingMode;
currentLoggingMode = disk
Журналирование к диску требует объекта MATLAB® VideoWriter
. VideoWriter
является функция MATLAB, не функция тулбокса. После того, как вы создадите и сконфигурируете объект VideoWriter
, предоставьте его свойству DiskLogger
объекта ввода видео.
VideoWriter
обеспечивает много различных профилей, которые регистрируют данные в различных форматах. Этот пример использует профиль Motion JPEG 2000, который может регистрировать одно-полосы (полутоновые) данные, а также многобайтовые данные. Полный список профилей, обеспеченных VideoWriter
, может быть найден в документации.
% Create a |VideoWriter| object. logfile = VideoWriter('logfile.mj2', 'Motion JPEG 2000')
VideoWriter General Properties: Filename: 'logfile.mj2' Path: 'C:\Temp' FileFormat: 'mj2' Duration: 0 Video Properties: ColorChannels: Height: Width: FrameCount: 0 FrameRate: 30 VideoBitsPerPixel: VideoFormat: VideoCompressionMethod: 'Motion JPEG 2000' CompressionRatio: 10 LosslessCompression: 0 MJ2BitDepth:
% Configure the video input object to use the |VideoWriter| object.
vidobj.DiskLogger = logfile;
Теперь, когда объект ввода видео сконфигурирован для регистрации данных к файлу Motion JPEG 2000, инициируйте приобретение.
% Start the acquisition. start(vidobj) % Wait for the acquisition to finish. wait(vidobj, 5)
При журналировании больших объемов данных к диску запись на диск иногда отстает от приобретения. Чтобы определить, были ли все кадры записаны в диск, используйте свойство DiskLoggerFrameCount
.
while (vidobj.FramesAcquired ~= vidobj.DiskLoggerFrameCount) pause(.1) end
Проверьте, что свойство FramesAcquired
и свойство DiskLoggerFrameCount
имеют то же значение.
vidobj.FramesAcquired
ans = 10
vidobj.DiskLoggerFrameCount
ans = 10
% When the video input object is no longer needed, delete % it and clear it from the workspace. delete(vidobj) clear vidobj