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目录下.

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