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全过程(各种踩坑和报错)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容