模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

1635查看 | 2回复

Pixhawk无人机扩展教程(9)---树莓派安装opencv

[复制链接]
发表于 2020-7-4 19:16:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
网上关于树莓派安装opencv的教程比较多,但是由于树莓派安装的系统不一样,可能遇到各种各样的问题。以下安装方法是基于我们之前的ubuntu mate系统,在此记录给大家做个参考。安装过程比较长而且会遇到很多错误,要注意特别提醒的地方。安装好opencv,为以后做无人机视觉做准备。
本教程是在Python3基础上安装OpenCV(据悉自2020年1月1日起,Python2将不再得到支持。Python核心开发人员将不再提供错误修复版或安全更新等内容。)请大家先自行安装python3(我们安装的python3.5)。还要注意几点:1.树莓派有至少还有5G的存储空间,不然后面编译空间不够回报错;2.在安装的过程中,需要大量的内存,请将虚拟内存调整到2个G(2048),或则4个G(4096)。


1.在树莓派设置中把根目录扩大到整个SD卡

扩大TF卡的空间,如果不做这步操作,后面有可能会出问题卡死。sudo raspi-config
选择「7 Advanced Options 」,按回车

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 328

选择「A1Expand Filesystem」,按回车

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 8196

将根目录扩展到这个SD卡,充分利用SD卡的存储空间。退出设置界面,重启树莓派。再进行下面的步骤。



2、安装numpy

打开命令行界面,输入以下命令,安装Python科学计算库numpy
sudo pip3 install numpy


3、安装OpenCV所需的库

sudo apt-get install build-essential git cmake pkg-config -ysudo apt-get install libjpeg8-dev -ysudo apt-get install libtiff5-dev -ysudo apt-get install libjasper-dev -ysudo apt-get install libpng12-dev -ysudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -ysudo apt-get install libgtk2.0-dev -ysudo apt-get install libatlas-base-dev gfortran -y注意:我们在进行sudo apt-get install libgtk2.0-dev -y时遇到系统依赖问题不能安装,解决方法是使用sudo aptitude install分别安装提示中缺少的依赖,依赖安装完成以后,再安装 libgtk2.0-dev。网上也有说更换源以后再安装,但是实测没有用。


4、下载OpenCV3.4.3

在根目录下新建一个opencv文件夹,然后下载opencv和opencv_contrib

cdmkdir opencvcd opencvwget https://github.com/Itseez/opencv/archive/3.4.3.zipwget https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip
注意:下载后,将名称分别改为opencv-3.4.3.zip和opencv_contrib-3.4.3.zip,不然文件名重复了。

解压这两个压缩包
unzip opencv-3.4.3.zipunzip opencv_contrib-3.4.3.zip


5、在opencv-3.4.3文件夹里创建build文件夹

cd opencv-3.4.3mkdir buildcd build


6、设置编译参数

这里是安装opencv最容易出错的地方!大多数坑就集中在这里!
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.4.3/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.5 PYTHON_INCLUDE_DIR=/usr/include/python3.5 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages /numpy/core/include ..
先不要急于复制这个命令!!!

这里面有几个关键点,请对照自己的实际修改:

第一个:网上教程大多是这个路径
OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.3/modules
实际上是有一篇教程是这样写的,然后其他教程基本都是复制照搬。所以不管三七二十一复制执行,肯定会错误!

而我们的安装路径是:
OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.4.3/modules

第二点:检查python3路径。这个路径大部分是没有问题的,但最好先查看一下,如果这里忽略了,有可能后面几个小时的编译就白费了!

PYTHON3_EXECUTABLE=/usr/bin/python3
输入以下命令:
python3            查看python3的版本是python3Which is python3   查看路径
然后是下面的几个路径,也一并检查:
PYTHON_INCLUDE_DIR=/usr/include/python3.5PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so
还要注意python3版本的问题。我们安装的是python3.5,根据自己实际安装的版本来修改。

第三点:numpy的安装路径的问题,网上大多数教程是下面这样的,请不要照抄!
PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include ..
而我们的路径是这样的:
PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages/numpy/core/include ..
一定要根据自己的安装路径来!

上面的问题都解决了,就能顺利通过。还有一点就是,所有命令都在一行,不要换行,包括最后面的两个小点。

顺利通过后,就是下图这样:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 4695



7、编译

最后一步,也是最重要的一步:编译

建议使用windows远程桌面连接到树莓派执行本命令,而不要使用远程ssh连接。因为执行命令时间太长,中途如果ssh断线的话,编译也就停止了。你不知道是否已经安装完毕。
cd ~/opencv/opencv-3.4.3/buildmake   
这步请不要使用make -j4,非常容易报错或则死机。

接下来就是漫长的等待。。。大约需要5个小时的时间。



不过以为这样就能顺利安装了吗!结果却是这样的:

错误报警1:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 2341

进行到78%的时候,报错:没有boostdesc_bgm.i这个文件!实际上是在编译过程中网络问题造成文件无法下载,而且是一共缺少11个文件:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 8475

解决办法:

点击下面链接下载这些文件

链接:https://pan.baidu.com/s/1W0Bo0njjn1rAC_MscZScmw

提取码:pcvy

然后将这些文件复制到opencv_contrib/modules/xfeatures2d/src/目录下,重新编译即可。

因为前面已经进行了部分编译,重新编译时间会很快。



满心期待着,完成96%了,以为就能顺利编译完成了吗? 太too young,too simple了!

错误报警2:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 8553

在编译simple_pipeline.cpp这个文件的时候,找不到/opencv2/xfeatures2d这个文件。

解决办法:

几番寻找,终于找到了xfeatures2d.hpp文件的存放位置。按照报警提示的路径打开simple_pipeline.cpp,将xfeatures2d.hpp这个文件的绝对路径添加到include中,如下所示:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 7229

记得点保存,然后继续make。



结果。。。。。。96%这里是个大坑!

错误报警3:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 4331

错误报警4:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 8269

错误报警5:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 2318

错误报警6:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 1005

错误报警7:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 5393

一系列无法找到文件的报警。。。
不过还好处理方式都跟之前的一样,将无法编译的报警文件打开,把需要的文件的绝对路径添加到include中就能解决。目前不知道是设置问题导致还是在树莓派上编译opencv本来就会遇到这些问题。请有知道的朋友在群里留言大家相互交流!

以上问题处理完,编译总算过了!!!

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 8286

还有最后一步:

make命令执行完成之后,执行下面的命令:
sudo make insall

接下来我们测试一下opencv是否安装好。


8.测试OpenCV是否安装好

python3import cv2cv2.__version__
如果一切顺利,出现下图的结果,说明Python3环境下的OpenCV安装成功!

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 3852

自此opencv的编译安装总算完成了!!!



PS:有的朋友可能还会遇到一个问题:安装之前我己经安装过了ROS系统,而ROS系统使用的Python2.7,因此导致import cv2报出如下错误:

Pixhawk无人机扩展教程(9)---树莓派安装opencv 无人机,PIX,树莓派 作者:RXDlwE 9252

解决办法:

解决方法是ROS系统中的给cv2.so改个名字,或者参考论Afterinstall ROS Kinetic, cannot import OpenCV

cd/opt/ros/kinetic/lib/python2.7/dist-packages/sudo mv cv2.so cv2_ros.so


对树莓派扩展pixhawk感兴趣的朋友,可扫码加群交流哈!








发表于 2020-7-6 13:54:37 | 显示全部楼层
怎么一下蹦到9来了
回复 支持 反对

使用道具 举报

发表于 2021-1-17 19:36:22 | 显示全部楼层
扫码的二维码在哪儿呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!