天天看點

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

原文:https://www.bearoom.xyz/2019/08/20/ubuntu16-04-make-opencv3-4-7/

一、前言

因為之前作死亂搞系統,然後就把Ubuntu的系統搞垮了,對于我這樣的菜鳥而言,問題又看不懂,解決不了,docker又不會,從來都是重裝系統解決一起。系統一重裝,開發環境就得重來... 這次,編譯的OpenCV版本是3.4.7,雖然4.0都出來了... 下載下傳源碼:

1、OpenCV,在這裡找到要編譯的版本,我找的是OpenCV3.4.7;

2、opencv_contrib,如果不想用這裡面的功能,其實這個可以不用管的;找到和OpenCV3.4.7對應的opencv_contrib-3.4.7下載下傳。

3、ippicv_2019_lnx_intel64_general_20180723,這個在cmake的時候會自己下載下傳,但是賊慢,慢到可能都斷掉了,是以還是手動下載下傳吧。

4、face_landmark_model.dat,這個是make的時候下載下傳,也是賊慢,也可以手動下載下傳。

二、可能必要的前置

1、更新系統:

sudo apt-get update
sudo apt-get upgrade
           

2、依賴包:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
           

三、編譯

編譯OpenCV,真的建議安裝cmake的GUI,省事。安裝cmake的GUI,如果跟我一樣是菜鳥,真的别傻呼呼的敲指令行指令編譯了,浪費時間,還幾乎都不會去想這些指令是幹啥的,當然啦,那種遠端伺服器之類的就算法,老老實實指令行吧:

sudo apt-get install cmake-qt-gui
           

然後解壓OpenCV3.4.7和opencv_contrib-3.4.7,進入到OpenCV3.4.7的根目錄下,打開終端,輸入指令,建立build檔案夾:

mkdir build
cd build
           

打開cmake的gui:

cmake-gui ..
           

設定cmake的源碼路徑和輸入輸出(不過這個這樣打開就設定好了)

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

打開分組視圖和進階項:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

接下來各項設定,僅供參考:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

下面這張圖有個漏了,就是OPENCV_ENABLE_NONFREE這個選項要打開,不然像sift等算法用不了,當然,可以不用。

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

這裡的設定應該是比較清楚的,比指令行真的容易太多了,絕對适合我這種苯苯的菜鳥。有些設定是要先打開一些開關後,點選configure按鈕先配置一會才會出來的:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

configure點選之後應該會下載下傳一些檔案,包括前面提到的ippicv_2019_lnx_intel64_general_20180723,而face_landmark_model.dat可能是在cmake的時候下載下傳,也可能是make的時候,反正都可以先下載下傳下來。因為configure之後,ippicv等檔案會下載下傳很久,是以可以修改檔案的路徑指向本地檔案,而不用每次都下載下傳:

1、修改ippicv.cmake 檔案,在/opencv源碼根目錄/opencv/3rdparty/ippicv/這個路徑下,先執行一次cmake或者cmake GUI的configure之後才會有,修改原來的第47行左右,改為本地檔案:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

2、修改下載下傳face_landmark_model.dat的CMakeLists.txt檔案,在opencv_contrib-3.4.7/modules/face/CMakeLists.txt,大概是19行左右,也修改為自己下載下傳的本地檔案路徑:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

OK,這些修改好之後,重新點選configure,然後再點選generate生成配置檔案就可以關閉cmake的GUI了,接下來就是正常的make編譯了:

make
make install
           

這裡如果需要權限的話,就在指令前面加sudo,make如果太慢,可以:

make -j4
           

4是指4個線程,也可以是8或16或其它,看自己的CPU配置了吧。

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

到這裡差不多就make完成了,然後就是install,install基本沒啥問題,有問題一般會在make的時候出現。

四、我遇到的問題:

問題1:出現類似/usr/bin/ld: warning: libpcre.so.1, needed by...的問題

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

解決方法,參考:在/etc/ld.so.conf.d下建立一個opencv.conf檔案:

gedit /etc/ld.so.conf.d/opencv.conf
           

輸入内容:

/usr/local/lib
/usr/local/anaconda3/lib
sudo ldconfig
           

然後重新make即可。

問題2:提示類似//usr/lib/liblept.so.5:對‘[email protected]_4.0’未定義的引用等問題。

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

解決方法,參考:安裝liblept5,有些部落格會說下載下傳tiff-4.0.4.tar.gz,然後編譯安裝,其實在我這個問題上不适用,解決不了。是以還是用下面這句安裝:

sudo apt-get autoremove liblept5
           

問題3:在cmake-gui中configure的時候可能會提示有些×××.i的檔案下載下傳不了,主要是這些檔案:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

這個時候可以利用本地建立http來下載下傳,可以先上網找這些檔案下載下傳下來,然後放到/var/www/html檔案夾下,這個操作需要sudo權限,然後複制過去或者移動過去之後記得改下這幾個檔案的權限,不然普通使用者可能用不了。然後依次修改/home/zcx/opencv-3.4.7/opencv_contrib-3.4.7/modules/xfeatures2d/cmake/download_vgg.cmake和/home/zcx/opencv-3.4.7/opencv_contrib-3.4.7/modules/xfeatures2d/cmake/download_boostdesc.cmake這兩個檔案的url下載下傳路徑:

Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)
Ubuntu16.04編譯OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

我基本就遇到這些問題,是以暫時也就隻記錄這些吧。

五、參考

1、cmake GUI安裝Opencv:

https://blog.csdn.net/jindunwan7388/article/details/80397700

https://blog.csdn.net/jindunwan7388/article/details/80397700

2、解決make問題的:https://blog.csdn.net/tsq292978891/article/details/78854188

https://blog.csdn.net/weixin_40409574/article/details/90714591

3、解決ippicv和人臉檔案下載下傳的:

https://blog.csdn.net/CSDN330/article/details/86747867

桃李溪邊駐畫輪,

鹧鸪聲裡倒清尊。

夕陽雖好近黃昏。

香在衣裳妝在臂,

水連芳草月連雲。

幾時歸去不銷魂。

–蘇轼 《浣溪沙·春情》

繼續閱讀