OpenCV帧延迟了

时间:2013-04-22 16:40:51

标签: opencv frame

我有一个简单的代码,根据用户输入,相机会捕获图像。这是代码:

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

问题在于在显示图像时,Image [i]正在显示图像[i-1]的图像。

我不明白什么似乎是问题,因为我认为进入循环后,我必须按一个键,然后相机将捕获一张图片并将其存储到第一个对象,Image [0]和该过程重复4次。然而,情况似乎并非如此。

目前我有一个使用嵌套循环的解决方法。     int k; for(int i = 0; i&lt; 4; i ++){         cvWaitKey(0); //等待输入然后拍照         for(int k = 0; i&lt; 5; k ++){              Mat grabbed = cam1.CamCapture();              图像〔I〕.setImage(grabbed.clone());         }         imshow(“picture”,Image [i] .getImage());         cvWaitKey(1);     }

然而,这似乎不是一种有效的方式。我认为问题可能是由于缓冲问题,但我不太确定。

请指教,谢谢。

1 个答案:

答案 0 :(得分:0)

将for循环更改为do while循环

int i = 0;

do {
    cvWaitKey(0);                         //wait for input then take picture
    Mat grabbed = cam1.CamCapture();
    Image[i].setImage(grabbed.clone());
    imshow("picture", Image[i].getImage());
    cvWaitKey(1);
}while ( i<4; i++)

这是未经测试的