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");
} 展开
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");
} 展开
1个回答
展开全部
视频数据读取完了,frame = cvQueryFrame(capture);这句得到的frame值就为0,这时可以退出循环了,所以break
追问
是不是因为视频数据读完之后,frame变成空指针指向NULL,所以它的值为0?
追答
当frame = cvQueryFrame(capture);读到最后一帧时,frame是有值的,这是正常的,下面的cvShowImage也会播放最后这一帧。然后回去再执行frame = cvQueryFrame(capture);时,frame得到的值就是0了,因为没有数据了嘛,所以就需要break出循环了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |