配了一天,终于成功的在ubuntu上安装了ffmpeg,实现了opencv对avi文件的读取。
在CvCapture* pCapture=cvCaptureFromAVI("video.avi")语句中pCapture总是返回null。这是因为没有安装编解码器。
ffmpeg的安装:
1.下载源文件(以ffmpeg1.2.1为例):
http://ffmpeg.org/ffmpeg-1.2.1.tar.bz2
2.解压:tar xvjf ffmpeg-1.2.1.tar.bz2
3.配置ffmpeg:
./config --enable-shared --prefix=/usr 注意路径一定要是/usr
4.make
5.sudo make install
6.在/usr/include下
sudo mkdir ffmpeg
7.cp -r libav* libsw* ffmpeg 因为opencv config在这里检查是否安装ffmpeg
然后就可以安装opencv了。在cmake的时候,看ffmpeg是否等于YES。
源码:
#include<opencv2/opencv.hpp> #include<iostream> using namespace std; int main() { //声明IplImage指针 IplImage* pFrame ; //获取摄像头和视频 // CvCapture* pCapture = cvCreateCameraCapture(-1); //读取摄像头 CvCapture* pCapture=cvCaptureFromAVI("video.avi"); if (pCapture==NULL) cout<<"pcapture"<<endl; //创建窗口 cvNamedWindow("video", 1); cvMoveWindow("video",30,300); //显示视屏 while(1) { pFrame=cvQueryFrame( pCapture ); if(!pFrame)break; cvShowImage("video",pFrame); char c=cvWaitKey(33); if(c==27)break; } cvReleaseCapture(&pCapture); cvDestroyWindow("video"); }