1

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

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] 正在显示用于 Image[i-1] 的图片。

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

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

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

请指教,谢谢。

4

1 回答 1

0

将 for 循环更改为 do while 循环

诠释我=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++)

这是未经测试的

于 2013-04-22T17:42:41.957 回答