【问题标题】:getsnapshot speedup获取快照加速
【发布时间】:2013-03-27 04:20:05
【问题描述】:

getsnapshot 函数执行需要很长时间,因为(我猜)每次调用都会初始化网络摄像头。如果您想获取高帧率的图像,这是一个问题。

我偶然发现的窍门是调用preview 函数,它使网络摄像头处理程序保持打开状态,使getsnapshot 几乎是瞬时的,但它保持一个小的预览窗口打开:

% dummy example
cam = videoinput(...);
preview(cam);

while(1)
    img = getsnapshot(cam);
    % do stuff
end

有没有一种“更干净”的方式来加速getsnapshot? (没有打开预览窗口)

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    您可以使用专为视觉应用而构建的全新“机器视觉”工具箱。见以下代码:

    vid = videoinput('winvideo', 1, 'RGB24_320x240'); %select input device
    
    hvpc = vision.VideoPlayer;   %create video player object
    
    src = getselectedsource(vid);
    vid.FramesPerTrigger =1;
    vid.TriggerRepeat = Inf;
    vid.ReturnedColorspace = 'rgb';
    src.FrameRate = '30';
    start(vid)
    
    %start main loop for image acquisition
    for t=1:500
      imgO=getdata(vid,1,'uint8');    %get image from camera
      hvpc.step(imgO);    %see current image in player
    end
    

    如您所见,您可以使用 getdata 获取图像。 Matlab 中视频应用的瓶颈是预览窗口,它大大延迟了代码。新的 vision.VideoPlayer 快了很多(我在 Matlab 中的实时视觉应用程序中使用了这个代码。当我编写没有视觉工具箱的第一个版本时,实现了大约 18 fps 的帧速率和使用新工具箱达到 70 左右!)。

    注意:我在使用 Matlab 的图像应用程序中需要速度,你真的应该考虑通过 mex 使用 OpenCV 库来获得良好的图像处理性能。

    【讨论】:

    • 当我输入 'videoinput' 或 'getdata' 时,它说它是未定义的函数,它来自哪个附加组件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    相关资源
    最近更新 更多