我有一个简单的代码,根据用户输入,相机会捕获图像。这是代码:
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); }
然而,这似乎不是一种有效的方式。我认为问题可能是由于缓冲问题,但我不太确定。
请指教,谢谢。
答案 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++)
这是未经测试的