在MATLAB图像采集在指定的帧速率和图像保存为硬盘上的TIFF文件(Image acquisiti

2019-10-20 14:46发布

我试图获得与MATLAB控制点灰色Grasshopper3(USB3)相机(型号GS3-U3-41C6NIR-C)的图像。 我需要为80秒我在TIFF格式的计算机(灰度)的硬盘上的持续时间和安全图像获得在定义的帧速率(例如12 FPS)的图像。 我有“pointgrey”和安装“WINVIDEO”适配器和Matlab的最新版本和图像采集工具箱。 (如操作系统,我使用Windows 7专业版64位。)

>> imaqhwinfo

ans = 

    InstalledAdaptors: {'pointgrey'  'winvideo'}
        MATLABVersion: '8.3 (R2014a)'
          ToolboxName: 'Image Acquisition Toolbox'
       ToolboxVersion: '4.7 (R2014a)'
  • 如何设置以每秒12帧(或类似的值)的帧速率?
  • 我怎样才能获得的图像存储在我的HD为TIFF(灰度)文件? 到目前为止,我只能够存储图像的AVI文件并随后转化为.TIF文件。

谁可以帮我这个事? 你的帮助是非常感谢!

Answer 1:

你的摄像头有一组定义的帧率,你可以选择,你不能将其设置为你想要的任何随机帧速率。 你可以找到一组帧速率,并通过使用该功能改变它们getselectedsource()与您的视频对象作为输入。

 src = getselectedsource(vid)

  Display Summary for Video Source Object:

  Index:   SourceName:   Selected:
  1        'input1'      'on'    

结构src现在包含并控制许多它们之间的网络摄像头属性,帧速率的。 使用功能propinfo()以查看当前的和可用的帧速率。

propinfo(src,'FrameRate')

ans = 

           Type: 'string'
     Constraint: 'enum'
ConstraintValue: {'30.0000'  '15.0000'}
   DefaultValue: '30.0000'
       ReadOnly: 'whileRunning'
 DeviceSpecific: 1

对于我的摄像头我有两个选择,为30或15。帧率要改变帧速率做:

set(src, 'FrameRate','15');

为了测试帧速率,我们可以获取一些图像和记录速度

vid.FramesPerTrigger = 50;
set(src, 'FrameRate','30')
start(vid); [frames, timeStamp] = getdata(vid);
1/mean(diff(timeStamp))

ans =

   29.1797

set(src, 'FrameRate','15')
start(vid); [frames, timeStamp] = getdata(vid);
1/mean(diff(timeStamp))

ans =

   15.0109

要保存的图像作为.TIFF使用imwrite()函数而遍历帧和使用sprintf()以避免覆盖图像。

for ii=1:size(frames,4)
     imwrite(frames(:,:,:,ii),sprintf('web%i.tiff',ii));
end


文章来源: Image acquisition in MATLAB at specified frame rate and save images as TIFF files on hard disk