我有一个使用 USB 视频采集器从模拟相机获取图像的代码。对我来说最大的问题是,每当我使用 GETSNAPSHOT 获取图像时,该过程需要几秒钟才能执行,而设备的帧速率实际上是每秒 30 帧。有趣的是 preview(vidObj)
工作得很好。我知道有很多关于为什么 GETSNAPHOT 如此缓慢的讨论,并且有一个使用 TRIGGERCONFIG 非常流行的提议解决方案,但出于某种原因,这对我来说并没有提高图像采集率。我将在下面解释这两种情况:
obj = videoinput('winvideo', 2);
while someconditionhere
img= getsnapshot(cam); % extract frame i from the video
imshow(img);
%do stuff
end
obj = videoinput('winvideo', 2);
triggerconfig(obj,'manual');
start(obj);
while someconditionhere
img= getsnapshot(cam); % extract frame i from the video
imshow(img);
%do stuff
end
我试图让预览窗口在后台运行(我在网上找到的一个粗略的解决方案)但是我的 while 循环没有执行。此外,如果在第一个代码中,我添加了
start(obj)
,那么它会给我一个错误:“GETSNAPSHOT 期间发生超时。”我的想法用完了,我有几个小时后到期。任何帮助将不胜感激!
最佳答案
你可以试试下面的链接。有人在 matlab 中完成了实时鼠标指针控制,所以他们应该得到相当快的响应。 http://www.mathworks.com/matlabcentral/fileexchange/42943-virtual-mouse--mouse-pointer-control-using-color-detection/content/MouseControl.m
您会发现有用的主要代码应该是这样的 -
cam = imaqhwinfo; % Get Camera information
cameraName = char(cam.InstalledAdaptors(end));
cameraInfo = imaqhwinfo(cameraName);
cameraId = cameraInfo.DeviceInfo.DeviceID(end);
cameraFormat = char(cameraInfo.DeviceInfo.SupportedFormats(end));
vidDevice = imaq.VideoDevice(cameraName, cameraId, cameraFormat, ... % Input Video from current adapter
'ReturnedColorSpace', 'RGB');
while (condition)
rgbFrame = step(vidDevice); % Acquire single frame
关于image - MATLAB 中的 GETSNAPSHOT 太慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30469437/