TX2安装opencv3.2和遇到问题的解决
安装OpenCV,本以为会很顺利,结果折腾了不少时间,做个记录,做参考
先按官方文档安装一些依赖包
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
sudo apt-get install libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
我安装时出现libgtk2.0-dev无法安装的错误
网上查了很多解决方法都没用,最后是更改回源的方法管用
编辑/etc/apt/sources.list把内容换成以下源
deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ bionic universe
#deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic universe
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ bionic multiverse
#deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates multiverse
#deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security multiverse
更改源以后
sudo apt-get update
再次安装即可
以上所有安装都是顺利通过的,有问题就更改下安装源并且更新
到工程目录src下载opencv_contrib
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout -b v3.2.0 3.2.0
如果下载缓慢,可以到网盘下载
链接:https://pan.baidu.com/s/1yCgbhXvpOW2AOES_W2EsIA
提取码:tvi5
到工程目录src下
cd ~/catkin_ws/src
git clone https://github.com/opencv/opencv
这个方式比较慢,可以到官网下载zip格式再解压,或者到网盘下载3.2版本
链接:https://pan.baidu.com/s/1ILuvqK_41SIvt8rs2oJDGg
提取码:nqk0
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules/ …
这里出现cmake错误,网上分析原因是cuda新版本不支持2.0架构,因为3.4和以上版本没有下载,只能按照网上解决方法去解决了
opencv/cmake里找到FindCUDA.cmake文件
找到find_cuda_helper_libs(nppi)改为
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)
找到set(CUDA_npp_LIBRARY “
C
U
D
A
n
p
p
c
L
I
B
R
A
R
Y
;
{CUDA_nppc_LIBRARY};
CUDAnppcLIBRARY;{CUDA_nppi_LIBRARY};
C
U
D
A
n
p
p
s
L
I
B
R
A
R
Y
"
)
改
为
s
e
t
(
C
U
D
A
n
p
p
L
I
B
R
A
R
Y
"
{CUDA_npps_LIBRARY}")改为 set(CUDA_npp_LIBRARY "
CUDAnppsLIBRARY")改为set(CUDAnppLIBRARY"{CUDA_nppc_LIBRARY};
C
U
D
A
n
p
p
i
a
l
L
I
B
R
A
R
Y
;
{CUDA_nppial_LIBRARY};
CUDAnppialLIBRARY;{CUDA_nppicc_LIBRARY};
C
U
D
A
n
p
p
i
c
o
m
L
I
B
R
A
R
Y
;
{CUDA_nppicom_LIBRARY};
CUDAnppicomLIBRARY;{CUDA_nppidei_LIBRARY};
C
U
D
A
n
p
p
i
f
L
I
B
R
A
R
Y
;
{CUDA_nppif_LIBRARY};
CUDAnppifLIBRARY;{CUDA_nppig_LIBRARY};
C
U
D
A
n
p
p
i
m
L
I
B
R
A
R
Y
;
{CUDA_nppim_LIBRARY};
CUDAnppimLIBRARY;{CUDA_nppist_LIBRARY};
C
U
D
A
n
p
p
i
s
u
L
I
B
R
A
R
Y
;
{CUDA_nppisu_LIBRARY};
CUDAnppisuLIBRARY;{CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}”)
找到unset(CUDA_nppi_LIBRARY CACHE)改为
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)
保存后找文件OpenCVDetectCUDA.cmake
找到
…
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”)
…
去掉两行,改为
…
set(__cuda_arch_ptx “”)
if(CUDA_GENERATION STREQUAL “Kepler”)
set(__cuda_arch_bin “3.0 3.5 3.7”)
…
保存后找到modules/cudev/include/opencv2/cudev路径下找到common.hpp,打开加入
#include <cuda_fp16.h>
编译时还有一个错误fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h
解决方法
sudo apt-get install liblapacke-dev checkinstall
在build文件夹下找到opencv_lapack.h
把#include "LAPACKE_H_PATH-NOTFOUND/lapacke.h"改为#include “lapacke.h”
再次尝试编译,进入
cd opencv/build
make
sudo make install
下面关于opencv配置操作有些资料上有,但是我在TX2上没有做,未有影响
在/etc/ld.so.conf.d/下新建opencv.conf文件,加入
/usr/local/lib
在终端执行
sudo ldconfig /etc/ld.so.conf
编辑/etc/bash.bashrc文件加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
以上步骤完成后,在终端输入查询下版本号
pkg-config --modversion opencv
显示安装的版本号就OK了