对象(OOP)中的OpenCV存储图像

时间:2013-04-21 00:51:10

标签: visual-c++ opencv

我正在使用OpenCV在面向对象的方法中使用C ++进行编程。基本上我有一个名为People [8]的对象数组。对于每个阵列,我想通过使用网络摄像头拍照来为其分配图像。我做了这样的事情:

for (int i=0; i<8; i++){
    cvWaitKey(0);                         //wait for input then take picture
    Mat grabbed = cam1.CamCapture();
    People[i].setImage(grabbed);
    imshow("picture", grabbed);
    cvWaitKey(1);
}

我在这里面临两个问题: 1)imshow不显示捕获的“最新”图像,它显示先前拍摄的图像,即(i-1)而不是i。 2)当我一起显示所有图像时,出现8个窗口,所有窗口都显示在相机上捕获的最后一个图像。

我没有任何线索有什么不妥,有人可以请教吗?先感谢您。

2 个答案:

答案 0 :(得分:0)

我有一段时间没有使用过OpenCV,但是我会绕着cvWaitKey(1)移动,我也不会有2次调用,因为我记得它类似于glFlush()。我也会改1到10.出于某种原因,我记得1不工作。

答案 1 :(得分:0)

“所有这些都显示在相机上捕获的最后一张图像。”

从捕获点到驱动程序内存的图像。所以前一个图像被后者覆盖。

你需要存储你得到的mat的clone(),例如:

People[i].setImage( grabbed.clone() );