TX2成功安装Opencv3.4.0记录


前言

TX2上安装OpenCV的方法我见过两种,一种是在给TX2烧录系统时将OpenCV烧录进去,当然也可以选择不烧录OpenCV; 另一种方法是通过OpenCV源码编译安装,与正常PC机安装是相同的。我们的设备核心板是Nvidia的TX2,但是底板是不同的,刷系统很麻烦,所以我们采用源码编译安装的方法来安装OpenCV。最好最权威的安装教程依然是官方教程,我们这里将综合优质博客和官方安装教程。


一、下载openc3.4.0和opencv_contrib3.4.0源码

从opencv官网下载opencv3.4.0以及opencv_contrib压缩包:
openCV下载地址
OpenCV_contrib下载地址
将下载的opencv3.4.0及opencv3.4.0_contrib解压,并将opencv3.4.0_contrib的文件夹放到opencv3.4.0的文件夹中。

二、依赖安装

终端运行以下命令

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

其中optional(可选)安装的包中libjasper-dev安装并未成功,网上有方法来解决此问题,终端输入以下命令

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

尝试后依然安装失败,跳过,毕竟本来libjasper-dev就是可选安装的。

三、安装opencv及opencv_contrib

进入opencv3.4.0目录,打开终端,执行命令:

cd opencv-3.4.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

cmake成功后再make一下:

make -j4

make成功之后再执行安装命令:

sudo make install

这样就完成了OpenCV的安装。

四、添加路经

打开终端,执行命令:

sudo vim /etc/ld.so.conf.d/opencv.conf

在opencv.conf文件中添加内容:

/usr/local/lib

之后在终端输入

sudo vim /etc/bash.bashrc

在文件的最末端添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH```

在终端输入

```bash
source /etc/bash.bashrc

使其修改并生效。

五、测试

进入opencv/samples/cpp目录下,有一个opencv自带的例程,我们对此例程进行编译。

cd ../samples/cpp/example_cmake
cmake .
make
./opencv_example

如果出现如下画面就成功了。
在这里插入图片描述


问题

make时出错No rule to make target ‘/usr/lib/aarch64-linux-gnu/libGL.so‘解决办法
报错信息提示在路径/usr/lib/aarch64-linux-gnu/下面找不到libGL.so文件。

在终端中打开/usr/lib/aarch64-linux-gnu/路径,查找libGL 相关文件,显示信息如下:

libGL.so libGLEW.so libGLX.so.0
libGL.so.1 libGLEW.so.2.0 libGLX.so.0.0.0
libGL.so.1.0.0 libGLEW.so.2.0.0 libGLX_indirect.so.0
libGLESv1_CM.so libGLU.a libGLX_mesa.so.0
libGLESv2.so libGLU.so libGLX_mesa.so.0.0.0
libGLESv2.so.2 libGLU.so.1 libGLdispatch.so.0
libGLESv2.so.2.0.0 libGLU.so.1.3.1 libGLdispatch.so.0.0.0
首先使用sudo rm libGL.so删掉该路径下的libGL.so文件,

然后使用命令行:sudo ln -s /usr/lib/aarch64-linux-gnu/libGL.so.1 /usr/lib/aarch64-linux-gnu/libGL.so,将libGL.so.1与libGL.so关联起来。

再次运行sudo make 命令,编译通过。

该解决方法的本质就是在你的设备中找到libGL.so相关的文件,使得它与报错提示信息中’/usr/lib/aarch64-linux-gnu/libGL.so’的文件关联起来,

有可能你的libGL.so相关文件不在/usr/lib/aarch64-linux-gnu/文件夹下面,很多帖子中提到的libGL.so相关文件在/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2中,根据自己的实际情况来确定

编译我自己的程序时遇到错误:Project ‘cv_bridge’ specifies ‘/usr/include/opencv’ as an include dir, which is not found.
网上有人说这不是因为我们编写的程序有误,而是NVIDIA的32.3.1image自带的是opencv4版本,把opencv命名成了opencv4。

修改方法:网上有人说需修改上述路径中的cv_bridgeconfig.cmke文件,将100行附近的两个opencv改成opencv4即可(注意,只需要改动单独一个的opencv,前面有连字符的opencv不需要改动)
注意:如果jetson的版本自带的opencv是3版本,可能不会出现此问题
但是我尝试后会出现其他问题,因此我将cv_bridgeconfig.cmke文件,将opencv的路径‘/usr/include/opencv’ 改为“/usr/local/include/opencv”,成功编译。

参考:
https://blog.csdn.net/CQQ1021114542/article/details/115405798?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.control

https://blog.csdn.net/qq_38236355/article/details/88864023

https://blog.csdn.net/qq_41080854/article/details/88609795

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值