最近空閒時間比較多,打算仔細看看opencv的源碼,做個筆記。
opencv的安裝一般分爲兩種方式:
- 安裝包直接安裝
- 源碼編譯安裝
命令行安裝較爲簡單,本文主要介紹使用cmake進行源碼編譯安裝。
因爲使用的遠程服務器,所有操作沒有可視化界面,都是在終端命令行。
目錄
1、CMake安裝
CMake工具是opencv官方推薦的源碼編譯工具。安裝教程
查看cmake版本號
2、opencv3.4.8 源碼下載
github選擇需要的版本下載,鏈接
3、源碼編譯流程
(1)configure/cmake
用來檢測安裝平臺的目標特徵,比如檢測你是不是安裝有GCC等,並不會實際進行編譯。
通常一個大型項目的Makefile文件是十分複雜的,寫Makefile非常麻煩,所以開發出了一種CMake工具,它能夠輸出各種各樣的makefile或者project文件,從而幫助程序員減輕負擔。但是隨之而來也就是編寫cmakelist文件,它是cmake所依據的規則。
make和cmake的區別
(2)make
make用來編譯的,它是一個自動化編譯工具。從Makefile文件中讀取指令,然後根據設置的編譯選項進行編譯。
(3)make install
用來安裝的,也是從Makefile文件中讀取指令,安裝到指定的位置。
4、opencv源碼編譯
cd opencv-3.4.8
mkdir build
cd build
cmake .. // configure 配置
make -j8 // make 編譯
sudo make install // make install 安裝
4.1 編譯出現錯誤
錯誤如下:
這種錯誤的根本原因:
configure時沒有支持OpenGL,編譯opencv庫時用到了OpenGL中的變量。所以導致出錯。
可以通過添加
-D WITH_OPENGL=ON
解決這個問題。
但是又出現了,如下問題
如錯誤提示,添加
-D WITH_QT=ON
最後的configure命令可以寫成
cmake -D WITH_QT=ON -D WITH_OPENGL=ON ..
也可以寫成下面,方便理解
cmake -D CMAKE_BUILD_TYPE=RELEASE \ #編譯模式,release/debug, 默認爲release
-D CMAKE_INSTALL_PREFIX=/usr/local \ #安裝路徑
-D WITH_TBB=ON \ #Include Intel TBB support(Intel開發的並行編程開發工具),默認爲off
-D BUILD_TIFF=ON \ #Build libtiff from source(一種靈活的位圖格式),默認爲ON
-D WITH_V4L=ON \ #支持Vedio4Linux(是Linux中關於視頻設備的內核驅動,爲針對視頻設備的應用視頻設備的應用程序提供一系列接口函數,這些視頻設備包括TV卡、視頻捕捉卡和USB攝像頭等,對於USB攝像頭,其驅動程序中需要提供基本的I/O操作用於open、read、write、close函數的實現),默認爲ON
-D INSTALL_C_EXAMPLES=ON \ #Install C examples, 默認爲off
-D INSTALL_PYTHON_EXAMPLES=ON \ #Install Python examples, 默認爲off
-D BUILD_EXAMPLES=ON \ #Build all examples, 默認爲off
-D WITH_QT=ON \ #支持QT(c++圖像用戶界面開發框架,多用於開發GUI),默認爲off
-D WITH_GTK=ON \ #支持跨平臺通用圖形工具包GTK, 默認爲on
-D WITH_OPENGL=ON \ #支持開放圖形庫OpenGL,默認爲off
..
5、測試是否安裝成功
5.1 運行命令:
pkg-config --cflags --libs opencv
出現下面信息
5.2 運行程序
生成可執行程序
g++ rgb2gray.cpp -o test `pkg-config --cflags --libs opencv`
執行文件
./test
如果出現找不到so文件的錯誤,那是動態鏈接庫的路徑沒有添加好,可按下面的方式添加:
-
1、用vim打開/etc/ld.so.conf,注意要用sudo打開獲得權限,不然無法修改,如:sudo vim
/etc/ld.so.conf,在文件最後中加上一行 /usr/local/lib -
2、運行:
sudo ldconfig -
3、修改bash.bashrc文件:
sudo vim /etc/bash.bashrc -
4、在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH -
5、最後執行:
source /etc/bash.bashrc