我有一个简单的代码,通过该代码,在用户输入时,相机将捕获图像。这是代码:

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/

10-16 21:39