快速加速

Cav*_*vaz 5 matlab image-processing

getsnapshot函数需要花费大量时间执行,因为(我猜)每次调用时都会初始化网络摄像头.如果要获取具有高帧速率的图像,则会出现此问题.

我欺骗我随便发现是调用该preview函数,这使得网络摄像头处理程序getsnapshot几乎立即打开,但它保持一个小的预览窗口打开:

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

while(1)
    img = getsnapshot(cam);
    % do stuff
end
Run Code Online (Sandbox Code Playgroud)

是否有"更清洁"的加速方式getsnapshot?(未打开预览窗口)

Jor*_*rge 6

您可以使用专为视觉应用而设计的新"机器视觉"工具箱.见下面的代码:

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
Run Code Online (Sandbox Code Playgroud)

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

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