opencv视频读取程序,为什么没有显示,请各位大侠帮帮忙

#include "iostream"
#include "cv.h"
#include "highgui.h"
using namespace std;
int main(int argc,char** argv)
{
CvCapture* capture=cvCreateFileCapture("video.avi");//cvCaptureFromAVI("video.avi");// 读入AVI文件cvCreateFileCapture(argv[1]);
IplImage *img=0;
if (!cvGrabFrame(capture))//cvQueryFrame 函数是 cvGrabFrame 函数和 cvRetrieveFrame函数
//的组合调用,直接返回一幅图像。单独cvGrabFrame不能。
{
printf("Could not grab a frame\n\7");
exit(0);
}
img=cvRetrieveFrame(capture);//取回由函数cvGrabFrame抓取的图像

img=cvQueryFrame(capture);//获取视频
cvNamedWindow("avi", CV_WINDOW_AUTOSIZE); //定义一个窗口
//捕捉装置的各个属性
int frameH =(int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);//获得文件总帧数以对滚动条设置
int frameW =(int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
int fps =(int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);//每秒的帧数
cvSetCaptureProperty(capture,CV_CAP_PROP_POS_AVI_RATIO,0);
//CV_CAP_PROP_POS_AVI_RATIO - 视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾)

CvVideoWriter *writer=0;

int nFrames=50;
writer=cvCreateVideoWriter("video.avi",CV_FOURCC('D','I','V','X'),fps,cvSize(frameW,frameH),-1);
//四个字符用来表示压缩帧的codec 例如CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
for(int i=0;i<nFrames;i++)
{
cvGrabFrame(capture);//抓取帧
img=cvRetrieveFrame(capture);//恢复图像
cvWriteFrame(writer,img);//将帧加入视频文件
cvShowImage("avi", img);
if(cvWaitKey(200)>0)break;
}
cvReleaseVideoWriter(&writer);
cvDestroyWindow("avi");cvReleaseCapture(&capture);
cvReleaseImage(&img);//为什么释放这个要出错
return 0;
}

第1个回答  2011-10-20
驱动问题,可搜索Camerads,完美解决方案。
第2个回答  2011-10-21
你检查一下video.avi的编码格式
相似回答