Я реализую алгоритм, который требует видеокадр с момента времени 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 для разных изображений, но это не имело никакого эффекта ...
Может кто-нибудь посоветовать мне, что я делаю не так?
Спасибо
Ренан