我有一个简单的代码,通过该代码,在用户输入时,相机将捕获图像。这是代码:
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次。但是,似乎并非如此。
我目前有一个使用嵌套循环的解决方法。
int k;
对于(int i = 0; i cvWaitKey(0); //等待输入然后拍照
为(int k = 0; i 抓取垫子= cam1.CamCapture();
图片[i] .setImage(grabbed.clone());
}
imshow(“图片”,Image [i] .getImage());
cvWaitKey(1);
}
然而,这似乎不是一种有效的方式。我认为该问题可能是由于缓冲区问题引起的,但我不太确定。
请指教,谢谢。
最佳答案
将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++)
这是未经测试的
关于opencv - OpenCV帧延迟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16152308/