16-树莓派安装OpenCV 过程&DEBUG汇总

本文介绍了如何在树莓派上分别安装Python2和Python3的OpenCV
安装Python3的OpenCV时需要编译,会覆盖Python2版本的

提前准备

换源

树莓派3B更换阿里云的软件源

安装运行在Python2上的OpenCV

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
验证
python
>>import cv2
>>cv2.__version__

安装运行在Python3上的OpenCV

安装numpy
sudo pip3 install numpy
安装OpenCV依赖
sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
//有冲突的可以用aptitude指令安装
下载并解压OpenCV
下载
wget https://github.com/Itseez/opencv/archive/3.4.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
//子豪提供的百度网盘 https://pan.baidu.com/s/182NYJzW1nCpnQ7ftSYYuSw
解压
cd /home/pi/Downloads 文件目录
unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip
设置参数
cd  ./opencv-3.4.0
mkdir build
cd ./build
//执行下面一大行命令(这一步最关键,路径可能要自己修改)
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=/root/opencv_contrib-3.4.0/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/lib/python3/dist-packages/numpy/core/include/ ..

运行要5min左右,如果提示没有error,都是done那就就成功了,报错的原因就是路径出了问题
重点检查OPENCV_EXTRA_MODULES_PATH 和PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python<version>/dist-packages/numpy/core/include/ NUMPY所在位置
编译
cd /root/opencv-3.4.0/build
sudo make
//编译可能要几个小时
  • DEBUG
错误一:缺少boostdesc_bgm.i文件
解决方案:手动下载添加
下载 https://pan.baidu.com/share/init?surl=SmRMg_aydPYOJ1jKNjGZPw 提取码:z7dp 
文件解压拷贝到opencv_contrib/modules/xfeatures2d/src/目录下

错误二:提示在“opencv2/opencv2/xfeatures2d.hpp”中不存在该文件,但是该文件实际是存在的:
解决方案:修改提示中的xfeature2d.hpp文件
根据给的路径找到xfeature2d.hpp的文件并打开,找到第42行如下:
#include"/opencv2/xfeatures2d.hpp"
修改为绝对路径
例:#include"/usr/local/arm/opencv3.4.0/opencv_contrib3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"

错误三:编译过程中内存满,死机
解决方案:在/opt/image中添加一个2G的swap交换文件 //大量交换可能会损坏 SD卡
sudo mkdir /opt/image
cd /opt/image
sudo touch swap 
sudo dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000 //添加交换文件并设置其大小为2G,这一步慢的一批
sudo mkswap /opt/image/swap //创建(设置)交换空间,使用命令mkswap
free -m //检查现有的交换空间大小
sudo swapon /opt/image/swap //启动新增加的2G的交换空间
free -m //检查现有的交换空间大小
sudo vim /etc/fstab //修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效
在文件最后加入
/opt/image/swap    /swap    swap    defaults 0 0
重启

错误四:编译过程中存储空间不足
解决方案:利用raspi-config扩大文件系统到整个SD卡
sudo raspi-config
Advanced Options
Expand Filesystem

错误五:提示 make: *** [Makefile:163:all] 错误 2 etc
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:63:modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:21633:modules/python3/CMakeFiles/opencv_python3.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
解决方案:
nano /root/opencv-3.4.0/modules/python/src2/cv2.cpp
将其中885,1555,1591,1592,1634行的 char*= 改成 const char*=

  • 编译完后还要执行一下
sudo make install
测试
python3
>>import cv2
>>cv2.__version__

内存吃紧的可以把编译目录删了

rm -rf /root/opencv-3.4.0/build

补充说明

"cv"版本的API是C语言开发的
"cv2"版本的API是基于C++语言开发的
为了保持向后兼容性所以叫"cv2"
我们都知道"cv2"就是OpenCV本尊

配置官方的摄像头Picamera

用nano编辑modules这个文件

sudo nano /etc/modules
//在末尾添加一行
bcm2835-v4l2
检测
//输入命令
vcgencmd get_camera

//输出下面代码即为正常
supported=1 detected=1

实例(把摄像头捕捉到的画面显示在桌面弹窗上)

git clone https://github.com/TommyZihao/opencvtest.git
cd opencvtest
python2 testopencv.py

参考文章

子豪兄教你在树莓派上安装OpenCV
树莓派4 安装OPENCV3全过程(各种踩坑和报错)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容