opencv播放avi文件中的if(!frame)break;的作用是什么?为什么frame=0时退出?

#include<highgui.h>intmain(intargc,char**argv){cvNamedWindow("example2",CV_WINDOW_AUT... #include<highgui.h>
int main(int argc, char **argv)
{
cvNamedWindow("example2",CV_WINDOW_AUTOSIZE);
CvCapture *capture = cvCreateFileCapture("street performers’life.avi");
IplImage *frame;
while (1)
{
frame = cvQueryFrame(capture);
if (!frame)break;
cvShowImage("example2",frame);
char c = cvWaitKey(33);
if (c == 27)break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("example2");

}
展开
 我来答
百度网友009594e
2015-07-27 · TA获得超过436个赞
知道小有建树答主
回答量:91
采纳率:0%
帮助的人:50.3万
展开全部
视频数据读取完了,frame = cvQueryFrame(capture);这句得到的frame值就为0,这时可以退出循环了,所以break
追问
是不是因为视频数据读完之后,frame变成空指针指向NULL,所以它的值为0?
追答
当frame = cvQueryFrame(capture);读到最后一帧时,frame是有值的,这是正常的,下面的cvShowImage也会播放最后这一帧。然后回去再执行frame = cvQueryFrame(capture);时,frame得到的值就是0了,因为没有数据了嘛,所以就需要break出循环了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式