新博客地址:http://gorthon.sinaapp.com/
1. 开发环境为VC6.0+OpenCV1.0 (已经放到115网盘备用)。
2. XviD下载地址:http://www.xvidmovies.com/codec/ (有这个“解码器”,就可以播放用此编码写的avi视频文件)
3. 安装好了之后查看环境变量是否正确(比如C:/Program Files/OpenCV/bin/)。
4. 代码如下:
#include <highgui.h> void showImage() { cvNamedWindow("显示图像", CV_WINDOW_AUTOSIZE); IplImage* img = cvLoadImage("1.jpg");//工程文件夹下面放一1.jpg文件测试用 cvShowImage("显示图像", img); cvWaitKey(0);//任意键退出 cvReleaseImage(&img);//显式释放占用的内存 cvDestroyWindow("显示图像");//显式关闭窗口 } void playAvi() { cvNamedWindow("播放视频", CV_WINDOW_AUTOSIZE); CvCapture* capture = cvCreateFileCapture("1.avi");//工程文件夹下面放一1.avi文件测试用, //此avi视频一定要是XviD编码,可以通过格式工厂或QQ影音等查看其编码, //如果不是此编码,可先用格式工厂等转换为XviD编码的avi格式视频 IplImage* oneFrame; while (frame) { oneFramee = cvQueryFrame(capture); cvShowImage("播放视频", oneFrame); char key = cvWaitKey(30);//数字越小视频播放的赽快,这个数字有时候会使视频 //不能正常播放,先暂时以30ms(帧间播放间隔)为测试,以后会读取文件属性来得到此参数。 if (key == 27) break; //27是ESC键的ASCII码 } cvReleaseCapture(&capture); cvDestroyWindow("播放视频"); } void main() { showImage(); playAvi(); }
5. 一点补充:
cvLoadImage()函数支持大部分图像类型如:BMP,JPEG,DIB,PPM,PNG,TIFF,RAS,SR,PGM,PBM,JPE。
cvCreateFileCapture()以及cvLoadImage()的参数接受一个字符串,一般是一个文件名,如"E:/Workspace/opencv/1.avi",最好用/而不是/。为了方便直接用VC6运行这里直接写入了文件名。当然也可以写成如下:
int main(int argc, char** argv) { //...... IplImage* img = cvLoadImage(argv[1]); //...... return 0; }
这样可以在命令行模式下cd到工程目录的Debug目录,然后test.exe "E:/Workspace/opencv/1.avi"回车即可。
当然此时还不能放出视频声音。