私はこのコードを書いた
while (true)
{
cv::Mat frame1,frame2,dst,temp;
if (!input_video.read(frame1))
{
fprintf(stderr, "Video has Finished .\n");
getchar();
return -1;
}
if (!input_video.read(frame2))
{
fprintf(stderr, "Video has Finished .\n");
getchar();
return -1;
}
cv::cvtColor(frame1,frame1,CV_RGB2GRAY) ;
cv::cvtColor(frame2,frame2,CV_RGB2GRAY) ;
cv::subtract(frame2,frame1,dst);
cv::imshow("F1",frame1);
cv::imshow("F2",frame2);
cv::imshow("dst",dst);
cv::waitKey();
}
ビデオ(カメラからではなく、ハードディスクからのビデオ)を読んでいるとき、frame1、frame2は同じです!!!
「read」メソッドが frame2 に対して同じフレームを返す理由がわかりません。したがって、減算された画像は常に空の画像です!!!
連続するフレームを同時に読み取るために何か特別なことをする必要がありますか? たとえば、別のフレームを読みたいときはいつでも、この行を使用してそのフレームにアクセスします。
input_video.set(CV_CAP_PROP_POS_FRAMES,current_frame+1);
もしそうなら、これをしない別の方法はありますか?!
ありがとう