1. 仓库地址
- opencv
https://opencv.org/releases/page/6/ - opencv_contrib
https://github.com/opencv/opencv_contrib/tree/3.2.0
2. cmake-gui安装
安装指令
csharp
sudo apt-get install cmake-qt-gui
如果安装过程中入到下面的问题
可以按照以下方法解决
c
sudo apt --fix-broken install
sudo apt clean
sudo apt update
一旦你解决了依赖关系问题,就可以尝试重新安装 cmake-qt-gui
csharp
sudo apt-get install cmake-qt-gui
3.编译安装
将压缩包解压并进入文件夹,把opencv_contrib-3.2.0
放到opencv-3.2.0
文件夹中,创建build
文件夹
cpp
cd opencv-3.2.0
mkdir build
卸载opencv4.1.1
cpp
sudo apt-get remove libopencv*
3.1 编译报错
3.1.1 替换下载地址
由于网络环境原因,cmake过程中部分文件会因无法链接到下载地址导致cmake失败。
我们先行替换部分文件下载地址。
3.1.1.1 <boostdesc_bgm.i>
相关文件下载失败
打开终端,输入以下内容打开对应cmake文件:
cpp
sudo gedit ~/OpenCV/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/download_boostdesc.cmake
将其中的raw.githubusercontent.com
修改为raw.staticdn.net
,保存并关闭gedit编辑器。
3.1.1.2 <vgg_generated_xxx.i>
相关文件下载失败
打开终端,输入以下内容,打开对应cmake文件:
cpp
sudo vim ~/OpenCV/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/download_vgg.cmake
将其中的raw.githubusercontent.com
修改为raw.staticdn.net
,保存并关闭gedit编辑器。
3.1.2 OpenCV编译出现 CMake Error: CUDA_nppi_LIBRARY (ADVANCED)
原因解析:
cuda10不再支持2.0架构
解决方法:
第一步:在 opencv-3.2.0/cmake
文件夹下找到 FindCUDA.cmake
文件,对其进行修改
cpp
cd /home/zqzy/software/opencv-3.2.0/cmake
sudo vim FindCUDA.cmake
1)找到行
cpp
find_cuda_helper_libs(nppi)
改为
cpp
find_cuda_helper_libs(nppial)
find_cuda_helper_libs(nppicc)
find_cuda_helper_libs(nppicom)
find_cuda_helper_libs(nppidei)
find_cuda_helper_libs(nppif)
find_cuda_helper_libs(nppig)
find_cuda_helper_libs(nppim)
find_cuda_helper_libs(nppist)
find_cuda_helper_libs(nppisu)
find_cuda_helper_libs(nppitc)
2)找到行
cpp
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
改为
cpp
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
3)找到行
cpp
unset(CUDA_nppi_LIBRARY CACHE)
改为
cpp
unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)
第二步: 在 opencv-3.2.0/cmake 文件夹下找到文件 OpenCVDetectCUDA.cmake,对其进行修改
cpp
cd /home/agilex/opencv3/opencv-3.2.0/cmake
sudo gedit OpenCVDetectCUDA.cmake
修改以下几行
cpp
...
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "2.0")
elseif(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
...
改为
cpp
...
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
elseif(CUDA_GENERATION STREQUAL "Maxwell")
set(__cuda_arch_bin "5.0 5.2")
...
第三步: Cuda9或者Cuda10及以后的版本 中有一个单独的halffloat(cuda_fp16.h)头文件,也应该被包括在opencv的目录里
将头文件cuda_fp16.h添加至 opencv/modules/cudev/include/opencv2/cudev/common.hpp
cpp
cd /home/agilex/opencv3/opencv-3.2.0/modules/cudev/include/opencv2/cudev
sudo gedit common.hpp
即在common.hpp中添加
cpp
#include <cuda_fp16.h>
重新生成即可
3.1.3 查看 CUDA 版本:nvcc -V 报错:bash: nvcc: 未找到命令
正常情况下,在安装完jetpack 系统之后,jetson nano会自动安装好cuda,
但是却提示报错
原因就是没有配置环境变量
解决办法
此时切换到 ~ 目录下: cd ~ ;
然后打开 .bashrc 文件:
cpp
cd ~
sudo vim .bashrc
接着按 i 键,进入编辑状态;
再接着在文件的末尾添加下面三行代码:
cpp
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda
紧接着,按 Esc
键,然后输入冒号 ,再按下 wq!
(表示强制写入并退出)!
最后一步,也是容易忘记的一步,一定要 source 一下这个文件:
cpp
source .bashrc
3.2 配置OpenCV
打开终端,输入:
cpp
#来到build文件夹
cd ~/opencv3/opencv-3.2.0/build
#执行cmake
cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="7.2" -D ENABLE_PRECOMPILED_HEADERS=OFF -D CUDA_ARCH_PTX="" -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv3/opencv_contrib-3.2.0/modules ..
不报错的话会输出以下信息
编译安装OpenCV
cpp
#来到build文件夹
sudo make -j4
sudo make install
4.OpenCV环境配置
创建opencv.conf文件,打开终端,输入:
cpp
sudo gedit /etc/ld.so.conf.d/opencv.conf
在文件中添加以下内容后保存并关闭gedit编辑器:
cpp
/usr/local/lib
使opencv配置文件生效
打开终端,输入:
cpp
sudo ldconfig
配置bash环境变量
打开.bashrc
文件,在终端输入:
cpp
sudo gedit ~/.bashrc
在文件的最末尾加入:
cpp
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
保存并关闭gedit编辑器。
在终端输入:
cpp
source ~/.bashrc
验证opencv是否安装成功:
打开终端,输入:
cpp
pkg-config --modversion opencv
若安装成功,终端应输出:
cpp
3.2.0