我有一个可以检测到的单个多头(立体声)usb 摄像头,并且可以使用 GraphEdit 中的“视频捕获源”过滤器流式传输立体声视频。
我正在尝试使用 OpenCV2.4.8(在具有 VS2010、Win7 X64 的 PC 上)访问两个通道以进行进一步的立体图像处理。但是,我只能检测/流式传输相机的单个头(通道),而不是它的两个立体声头。我的代码是根据VideoCapture::grab/VideoCapture::retrieve的相关文档说明设置的,如下所示:
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat Lframe,Rframe;
namedWindow("Lframe",CV_WINDOW_AUTOSIZE);namedWindow("Rframe",CV_WINDOW_AUTOSIZE);
while(char(waitKey(1)) != 'q') {
if(cap.grab())
cap.retrieve(Lframe,0); cap.retrieve(Rframe,1);// get a new frame
imshow("Lframe",Lframe);imshow("Rframe",Rframe);
if(waitKey(30) >= 0) break;
}
return 0;
}
问题是无论传递哪个通道索引,渲染的通道(Lframe,Rframe)都是相同的。因此,只能访问某些头部并且我无法获得立体声流。
有没有办法直接在 OpenCV 中使用“视频捕获源”过滤器?
等待您的帮助并提前感谢您,