CentOS下OpenCV無法讀取視訊檔案的解決方法

佚名發表於2020-06-21

在CentOS下,按照教程的步驟安裝OpenCV,但到最後無法讀取視訊檔案,原因是缺少了ffmpeg。於是通過CentOS中的軟體管理安裝ffmqeg,但還是沒有效果。然後對ffmpeg進行編譯,還是沒有效果。其實漏了一個關鍵步驟,就是將ffmpeg於OpenCV關聯起來。具體如下:

1、獲得ffmpeg:

通過cvs下載ffmpeg, 命令列輸入: svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

2、配置ffmpeg:

進入ffmpeg目錄,執行 ./configure --enable-shared --prefix=/usr (enabled-shared估計都知道意思,但是為什麼要 prefix=/usr呢,這得從opencv的CMakeLists.txt和heighgui下的cvcap_ffmpeg.cpp說起了,這裡涉及到的問題不要使路徑問題,但是也就是這個問題,搞得我去了一個早上。cMakeLists.txt中關於檢測是否有安裝ffmpeg時,預設是到/usr 下去檢測相應的標頭檔案之類的是否存在的,但是ffmpeg的預設安裝是安裝在/usr/local下的,問題就來了,所以改一下安裝路徑opencv在 cmake .時就無法檢測到你是否已經安裝了ffmpeg);

3、make;su -c "make install";

4、接下來要做的工作就是關係到opencv能否成功將ffmpeg的相關標頭檔案編譯進來的問題了:

4.1)首先在/usr/include下執行以下命令(root):

mkdir ffmpeg;

cp libav* libsw* ffmpeg; //之所以這麼做,是因為opencv configure時檢查是否已安裝ffmpeg是在這

檢查的

4.2)cmake .; //注意,cmake 和.之間有空格, 如果以上步驟都沒錯的話,一概可以看到 opencv的

configure結果中ffmpeg為1,不是之前的0,說明我們成功了。

4.3)make install;

5、將/usr/local/lib/pkgconfig下的opencv.pc cp到/usr/lib/pkgconfig下,這一步也可以做,只是一個配置檔案,大不了編譯時自己指定標頭檔案和庫麼,其實你開啟opencv.pc一看就知道是什麼玩意了。

6、root下, vim /etc/ld.so.conf, 增加一行, /usr/local/lib (因為opencv的庫檔案在local,預設情況下local/lib中的庫檔案是不在系統啟動時被load的)

7、ldconfig。

相關文章