【发布时间】:2013-07-13 05:58:58
【问题描述】:
我已经写了这段代码
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 是相同的!!!
我不知道为什么“读取”方法会为 frame2 返回相同的帧?所以减去的图像总是一张空的图片!!!
我应该为同时读取连续帧做一些特别的事情吗? 例如,每次我想阅读另一个框架时,使用这条线来到达那个框架:
input_video.set(CV_CAP_PROP_POS_FRAMES,current_frame+1);
如果是这样,还有其他方法不这样做吗?!
谢谢
【问题讨论】:
-
是的,我已经读过,但答案对我不起作用!我的意思是在这段代码中结果总是为零(即使是关键帧!!!)似乎 frame1,frame2 总是相同的......
标签: opencv image-processing computer-vision