ubuntu18編譯安裝opencv3.4.3

1. 配置

基本配置 版本號
CPU Intel® Core™ i5-8400 CPU @ 2.80GHz × 6
GPU GeForce RTX 2070 SUPER/PCIe/SSE2
OS Ubuntu18.04
openjdk 1.8.0_242
python 3.6.9
gcc 5.5
g++ 8.4
opencv 3.4.3
cmake 3.17.2
protobuf 3.0.0

hint:

  1. 如何多版本gcc,g++共存並且切換: https://blog.csdn.net/weixin_43056275/article/details/105124979
  2. 如何安裝cmake: https://www.cnblogs.com/jsdy/p/11759247.html
  3. 注意: 編譯caffe和openpose所使用的opencv必須版本一致, 不然到最後會報錯.
  4. opencv版本4.0以上測試openpose會報錯:. 錯誤: opencv-4.0.0/modules/highgui/src/window_gtk.cpp:146: error: (-215:Assertion failed) dst.data == widget->original_image->data.ptr in function ‘cvImageWidgetSetImage’

2. opencv3.4.3安裝編譯

2.1 下載源碼

https://github.com/opencv/opencv/archive/3.4.3.tar.gz
解壓後得到opencv-3.4.3

2.2 安裝依賴庫

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

2.3 編譯opencv3.4.3

cd opencv3.4.3
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv343 ..
make all -j16
make install

2.4 配置環境變量

配置環境變量

1. 打開文件:
sudo gedit /etc/ld.so.conf.d/opencv.conf

2. 將以下內容添加到最後:
/usr/local/opencv343/lib

3. 接下來配置庫:
sudo ldconfig

4. 更改環境變量:
sudo gedit /etc/bash.bashrc

5. 在文件後添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv343/lib/pkgconfig 
export PKG_CONFIG_PATH
6. 保存關閉
source /etc/bash.bashrc 重啓終端

測試

打開opencv-3.4.3/samples/cpp/example_cmake, 打開終端輸入下面的代碼

cmake .
make
./opencv_example

出現 Hello OpenCV 即是成功!

3. 編譯opencv踩坑記錄

問題1:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: 沒有那個文件或目錄

解決1:
 cmake時加上 -DENABLE_PRECOMPILED_HEADERS=OFF 

問題2:
.build_release/tools/caffe: error while loading shared libraries: libcudart.so.10.0

解決2:
sudo cp /usr/local/cuda-10.0/lib64/libcudart.so.10.0 /usr/local/lib/libcudart.so.10.0 && sudo ldconfig
sudo cp /usr/local/cuda-10.0/lib64/libcublas.so.10.0 /usr/local/lib/libcublas.so.10.0 && sudo ldconfig
sudo cp /usr/local/cuda-10.0/lib64/libcurand.so.10.0 /usr/local/lib/libcurand.so.10.0 && sudo ldconfig

問題3:
源碼編譯opencv卡在IPPICV: Download: ippicv_2017u3_lnx_intel64_general_20180518.tgz
解決3:

手動下載
https://download.csdn.net/download/weixin_43056275/12402359
如果想要其他版本的ippicv, https://github.com/opencv/opencv_3rdparty在這個鏈接選擇你想要的branch下載.
下載之後將ippicv_2017u3_lnx_intel64_general_20180518.tgz放在opencv-3.4.3/3rdparty/ippicv/downloads(自己新建), 修改opencv-3.4.3/3rdparty/ippicv/ippicv.cmake的內容.
將47行 “https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/”
改成
“file:/home/ying/usb/opencv3.4.2/opencv-3.4.3/3rdparty/ippicv/downloads/”
注意一定要加 file:
然後重新cmake

問題4:
runtime library [libcublas.so.10.0] in /usr/local/cuda/lib64 may be hidden by files in: /usr/local/lib
/usr/bin/ld: cannot find -lcudart /usr/bin/ld: cannot find -lcurand /usr/bin/ld: cannot find -lcudnn
問題4解決:
原因是之前安裝opencv默認直接安裝到/usr/local, 導致cmake訪問了多個libcublas.so.10.0. 解決: 卸載乾淨opencv, 先在build中sudo make uninstall, 然後手動刪除/usr/local/lib中沒有刪除乾淨的文件, 如下圖.
在這裏插入圖片描述刪除/usr/local/share中的OpenCV, /usr/local/include中的opencv和opencv2.
重新下載編譯opencv時, 注意一定要指定到一個空的文件夾, 並且必須要/usr/local下, 不然openpose找不到(就算指定opencv路徑也找不到). 比如cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv343 … 指定到/usr/local/opencv343目錄下.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章