#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");
}
是不是因为视频数据读完之后,frame变成空指针指向NULL,所以它的值为0?
追答当frame = cvQueryFrame(capture);读到最后一帧时,frame是有值的,这是正常的,下面的cvShowImage也会播放最后这一帧。然后回去再执行frame = cvQueryFrame(capture);时,frame得到的值就是0了,因为没有数据了嘛,所以就需要break出循环了。