【发布时间】:2014-04-10 06:06:27
【问题描述】:
我正在尝试在实时视频中使用色度键算法。我需要获取实时网络摄像头输入,实时处理并显示它。我已经有了处理图像的色度键算法。
如何处理网络摄像头输入并立即显示。我曾尝试使用 snapshot() 并将图像传递给色度键算法,但即使我提高快照速率,它也太慢了。我想要一个流畅的输出。
[另外,如果有比 Matlab 更好的选择,请告诉我。 ]
【问题讨论】:
我正在尝试在实时视频中使用色度键算法。我需要获取实时网络摄像头输入,实时处理并显示它。我已经有了处理图像的色度键算法。
如何处理网络摄像头输入并立即显示。我曾尝试使用 snapshot() 并将图像传递给色度键算法,但即使我提高快照速率,它也太慢了。我想要一个流畅的输出。
[另外,如果有比 Matlab 更好的选择,请告诉我。 ]
【问题讨论】:
不要使用getsnapshot() 连接到相机并在每一帧上断开连接(因此帧速率很慢),尝试使用视频输入然后preview 连接:http://www.mathworks.de/de/help/imaq/preview.html
如图所示,您甚至可以定义一个回调处理函数,在每个新接收到的帧上调用它。
【讨论】:
您必须将TriggerType 设置为manual,否则getsnapshot() 将在您每次需要帧时创建(并破坏)与相机的连接。通过将其设置为手动,您可以启动相机一次,获取帧并在完成后停止相机。
这是一个例子:
vidobj = videoinput('winvideo', 1, 'RGB24_640x480');
triggerconfig(vidobj, 'manual');
start(vidobj);
while true % Or any stop condition
img = getsnapshot(vidobj);
% Process the frame.
...
imshow(img);
drawnow;
end
【讨论】: