【注意】最好是先删除自带的opencv4.1.1,然后将opencv4.5.0安装到/usr/local
中,否则无法被jtop
检测到。
一、删除自带的opencv并用jtop查看
1、安装jtop
- 先安装pip
sudo apt-get install python3-pip
- 安装jtop
sudo -H pip3 install -U jetson-stats
- 使用jtop
sudo jtop
此时对应的opencv显示的是4.1.1版本,即刷完机后的初始版本。
2、卸载自带的openv4.1.1
sudo apt-get purge libopencv*
如果安装了别的版本的opencv,只要删除对应的安装文件夹就行了。
卸载完成之后,此时再次查看jtop,发现opencv显示未安装:
二、编译cuda版本的opencv4.5.0
1、下载opencv4.5.0和opencv-contrib4.5.0的源码包
opencv4.5.0:https://github.com/opencv/opencv/releases
opencv-contrib4.5.0:https://github.com/opencv/opencv_contrib/releases
2、解压opencv4.5.0与opencv-contrib4.5.0,并将opencv-contrib4.5.0文件夹放到opencv4.5.0文件夹中
3、安装依赖
sudo apt-get install build-essential pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
4、进入opencv4.5.0文件夹,创建build文件夹,进入build文件夹,进行cmake配置。
cd opencv4.5.0
mkdir build
cd build
cmake各参数定义:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D CUDA_ARCH_BIN='7.2' -D WITH_CUDA=1 -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D OPENCV_GENERATE_PKGCONFIG=1 -D WITH_GTK_2_X=ON ..
cmake各参数含义参考下图:
5、进行make,make成功后,进行安装。
sudo make -j8
sudo make install
6、添加环境变量
在/etc/ld.so.conf.d/opencv.conf
添加安装opencv的路径:
sudo gedit /etc/ld.so.conf.d/opencv.conf
/usr/local/lib
sudo ldconfig # 使配置生效
在/etc/bash.bashrc
中添加pkgconfig路径:
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc # 使配置生效
sudo updatedb
7、至此,安装成功,可以使用命令pkg-config --modversion opencv4
查看是否安装成功以及版本号。
用jtop查看是否编译成功:
三、测试及问题解决
1、测试安装的opencv4.5.0能不能用
进入./opencv4.5.0/samples/cpp文件夹,里面有很多可测试的例子,随便运行一个:
g++ edge.cpp `pkg-config opencv4 --cflags --libs` -o test
注意要使用opencv4
,否则会报错:
如果之前删除了自带的opencv4.1.1,那么这个例子能够编译且成功运行。
#####################################################################
【如果没有删除自带的opencv4.1.1】上面的这个例子能够编译成功,但运行时候会出错:
./test: error wwhile loading shared libraries: libopencv_highgui.so.4.5: cannot open shared object file: No such file or directory
可能是因为Xavier上自带了opencv4.1.1,我在运行的时候没指定是哪个版本的opencv,因此需要将opencv4.5.0添加到环境变量:
vi ~/.bashrc
添加:
export PKG_CONFIG_PATH=/usr/local/opencv4.5/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv4.5/lib
source ~/.bashrc
然后再次运行,能够运行成功:
2、其他问题
我一开始先挂载了硬盘,挂载到/home目录下,再编译的opencv,能够make成功,但是在make install的时候会报错:
后来我把硬盘挂载到其他的目录下,在Xavier原来的磁盘中编译opencv,就能成功了。不知道为啥子。