我正在实现一个需要从时刻t获取视频帧和另一个从时刻t+1获取的算法。看了一些示例,似乎非常简单。我认为这将完美地工作:
VideoCapture cap(0);
Mat img1, img2;
while(1) {
cap >> img1; // instant t
cap >> img2; // instant t+1
imshow(img1 == img2);
}
但实际上并没有,这些图像是相同的,因为显示的图像(img1 == img2)完全是白色的,每个像素的值都为255。
我想也许是我没有给相机足够的时间去捕捉第二帧,而是使用了仍在缓冲区中的相同帧。我的做法很简单:
VideoCapture cap(0);
Mat img1, img2;
while(1) {
cap >> img1; // instant t
// I added 2.5 seconds between the acquisition of each frame
waitKey(2500);
cap >> img2; // instant t+1
waitKey(2500);
imshow(img1 == img2);
}
仍然不起作用。为了确保,我添加了以下代码行:
VideoCapture cap(0);
Mat img1, img2;
while(1) {
cap >> img1; // instant t
imshow("img1", img1);
waitKey(2500); // I added 2.5 seconds between the acquisition of each frame
cap >> img2; // instant t+1
// Here I display both images after img2 is captured
imshow("img2", img2);
imshow("img1", img1);
waitKey(2500);
imshow(img1 == img2);
}
当我再次捕获img1后显示这两个图像时,这两个图像都发生了变化!我已尝试使用不同的VideoCapture对象对不同的图像进行捕获,但没有任何效果...有人可以指导我做错了什么吗?
谢谢,
Renan