配了一天,終於成功的在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"); }
