OpenCV 2.4.3和视频输入Mat

OpenCV 2.4.3和视频输入Mat,opencv,visual-studio-2010,Opencv,Visual Studio 2010,我正在尝试使用videoInput库、OpenCV 2.4.3和VS2010 Express将两个或更多MSFT LifeCam HD-3000中的视频捕获到Mat类型中 我在上一次课时就学习了这个例子,效果很好 现在我想用C++ Mat类型替换iPLIGION类型。我试着在以下方面效仿: 这给了我以下几点: VI = new videoInput; int CurrentCam = 0; VI->setupDevice(CurrentCam,WIDTH,HEIGH

我正在尝试使用videoInput库、OpenCV 2.4.3和VS2010 Express将两个或更多MSFT LifeCam HD-3000中的视频捕获到Mat类型中

我在上一次课时就学习了这个例子,效果很好

现在我想用C++ Mat类型替换iPLIGION类型。我试着在以下方面效仿:

这给了我以下几点:

    VI = new videoInput;
    int CurrentCam = 0;
    VI->setupDevice(CurrentCam,WIDTH,HEIGHT);
    int width = VI->getWidth(CurrentCam);
    int height = VI->getHeight(CurrentCam);
    unsigned char* yourBuffer = new unsigned char[VI->getSize(CurrentCam)];
    cvNamedWindow("test",1);
    while(1)
    {
       VI->getPixels(CurrentCam, yourBuffer, false, true);
       cv::Mat image(width, height, CV_8UC3, yourBuffer, Mat::AUTO_STEP);
       imshow("test", image); 
       if(cvWaitKey(15)==27) break;
    }
输出为线条图像(即,第一行看起来正确,但第二行看起来不正确,第三行正确,第四行不正确,等等)。这表明,要么是步骤部分错误,要么是IplImage类型和Mat类型之间存在一些差异,我没有得到这些差异。我试过查看/修改所有参数,但什么也找不到

希望这个答案能帮助那些面临从videoInput库加载图像到Mat类型的常见问题的人

提前谢谢

试试看

cv::Mat image(height, width, CV_8UC3, yourBuffer, Mat::AUTO_STEP);
试一试


非常感谢!它现在工作得很好。第二个示例使用宽度-高度顺序,但构造函数使用大小结构。这把我扔到了这里。排成一排的科尔斯的方式确实让那些习惯于宽高的人感到困惑。非常感谢!它现在工作得很好。第二个示例使用宽度-高度顺序,但构造函数使用大小结构。这把我扔到这里来了。排成队的方式确实让那些习惯于宽高的人感到困惑。