在CentOS系統上安裝OpenCV 3

2021-09-19 18:58:26 字數 2030 閱讀 3425

前幾天在一台centos系統上安裝帶解碼功能的opencv,過程略曲折,特此記錄安裝過程中遇到的一些問題和解決方法,以備後續查閱。

因為需要使用opencv的解碼功能,需要安裝ffmpeg,ffmpeg安裝過程見我之前的一篇博文:

安裝帶x264的ffmpeg

但是跟之前有些不一樣的地方,就是需要開啟libdc1394,因此在ffmpeg配置中需要加入 --enable-libdc1394。

libdc1394是乙個為應用程式開發人員提供高階程式設計介面的庫,它可以控制和捕獲來自基於ieee 1394攝像頭的流,這些攝像頭符合基於1394的數位相機規範(也稱為iidc或dcam規範)。libdc1394還支援一些符合iidc的usb攝像頭。

安裝好libdc後,即可正常安裝ffmpeg了。

opencv原始碼位址

1. mkdir build
由於我們要使用ffmpeg進行解碼,因此需要開啟ffmpeg,設定cmake -d with_ffmpeg=on。另外,如果系統編譯器版本較低,可能不支援c++11,會出現配置失敗的問題,因此,需要在配置時使能c++11:cmake -d enable_cxx11=1。這樣,最終的配置命令列如下:

2. cmake -d enable_cxx11=1 -d cmake_build_type=release -d cmake_install_prefix=/usr/local -d with_ffmpeg=on  ..
當然,以上是比較簡單的設定,根據不同的需要,可以加入不同的引數。

以上命令列執行完成後,在執行結果中發現ffmpeg庫後面都是off(或no)的狀態,也就是說opencv配置ffmpeg庫未生效,這是怎麼回事呢?經過分析並在網上查詢解決方案,發現雖然系統中已經安裝了ffmpeg,在opencv配置中也開啟了ffmpeg選項,但是opencv並沒有找到ffmpeg庫的位置。檢視opencv cmakelist.txt,可以看到對ffmpeg系列庫狀態的判斷如下:

我們知道,在編譯中如果不明確指定依賴庫的標頭檔案和庫路徑,就需要使用pkg-config來獲取依賴庫的資訊。一般來講,系統會預設在/usr/lib/pkgconfig,或者/usr/share/pkgconfig,或者環境變數pkg_config_path指定的目錄下查詢*.pc檔案來確定依賴庫的資訊,但我們在安裝ffmpeg時,是預設安裝到了/usr/local/lib目錄下,對應的pkgconfig也在這個目錄下,但/usr/local/lib/pkgconfig並不在系統查詢的範圍之內,因此我們需要把該路徑放在pkg_config_path中。具體操作方法:

vim /etc/profile
在檔案末尾新增如下語句:

export pkg_config_path=/usr/local/lib/pkgconfig:$pkg_config_path
儲存並退出檔案後,執行如下語句使之生效:

source /etc/profile
以上操作完成後,再次執行opencv的配置命令(見編號為2的命令列),配置通過。

之後依次執行make、make install完成編譯和安裝。

3. make

4. make install

opencv安裝完成後,我們來測試一下是否能夠正常使用,主要是解碼功能。寫了乙個簡單的測試程式,測試從rtsp碼流解碼的功能:

#include #include using namespace std;

using namespace cv;

int main(int argc, char **ar**)

printf("open videocapture success! \n");

while(1)

return 0;

}

編譯執行,解碼24小時未出現異常。

在Android Studio上使用OpenCL

在嘗試了很多的方法後,終於可以在android studio上使用opencl,現在記錄一下過程。git clone git github.com gaussrieman libopencl stub.git 在android.mk中新增乙個static library include clear ...

在Linux系統centos上安裝RAR

由於最近弄了個計畫,不得不使用rar,所以要在centos上安裝rar,記錄如下 wget tar xvf rarlinux 3.9.3.tar.gz cd rar make 看見下面這些資訊就是安裝成功了 mkdir p usr local bin mkdir p usr local lib cp...

centos7利用docker安裝openvas

b.配置檔案 gsad log.conf etc openvas openvasmd log.conf pwpolicy.conf redis conf etc redis c.資料檔案 ca var lib openvas cert data gnupg mgr openvasmd plugins...