基本配置 | 版本号 |
---|---|
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:
https://github.com/opencv/opencv/archive/3.4.3.tar.gz
解压后得到opencv-3.4.3
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
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
配置环境变量
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 即是成功!
问题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目录下.