最近需要在树莓派上做些图像处理
要用到opencv 因此就开始采坑之路…
(自带的python3.5 安装的是opencv3.4.0)
- 前期准备
* 安装numpy
* 把根目录扩大到整个SD卡 - 安装opencv
* 换源
* 安装依赖库
* 下载 解压opencv
* 设置编译参数
* 编译
* 编译过程中出现的错误
* 缺失文件 #include"boostdesc_bgm.i
* 路径出错 include “opencv2/xfeatures2d/cuda.hpp”
* 验证opencv
* 使用opencv打开树莓派摄像头
前期准备
安装numpy
打开终端 使用pip3(pip默认指的是python2.7的pip)进行安装numpy依赖库
sudo pip3 install numpy
把根目录扩大到整个SD卡
(后续操作需要很大的空间 不进行扩展会卡住)
- 打开终端 输入以下命令 进入树莓派配置界面
sudo raspi-config
-
进入以下画面 (按方向键上下选择 回车确定 Esc退出)
-
选择进入 7 Advanced Options (光标移动到7 回车)
进入以下页面
-
选择 A1 Expand Filesystem 回车
-
然后进行重启 打开终端 输入
sudo reboot
安装opencv
换源
先换源 不然下载会很慢
在终端直接执行以下两行命令,即可替换将官方默认软件源替换为中科大或清华镜像源。
中科大源
>sudo sed -i 's#://raspbian.raspberrypi.org#s://mirrors.ustc.edu.cn/raspbian#g' /etc/apt/sources.list
>sudo sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian#g' /etc/apt/sources.list.d/raspi.list
清华源
> sudo sed -i 's#://raspbian.raspberrypi.org#s://mirrors.tuna.tsinghua.edu.cn/raspbian#g' /etc/apt/sources.list
sudo sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.tuna.tsinghua.edu.cn/raspberrypi#g' /etc/apt/sources.list.d/raspi.list
更换源后,需要更新本地软件索引:
sudo apt-get update
安装依赖库
- 先更新一下
sudo apt-get update
sudo apt-get upgrade
- 安装build-essential、cmake、git和pkg-config
sudo apt-get install build-essential cmake git pkg-config
3.安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev
- 安装tif格式图像工具包
sudo apt-get install libtiff5-dev
- 安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev
- 安装png图像工具包
sudo apt-get install libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
注意
每下载一个都要看一下是否下载成功(没有说出错就是成功)
如果网络情况不好或则源在国外会导致有些包下载不下来
尤其是libpng12-dev 33M左右 要注意如果下载失败没有注意到后面很麻烦还要重装
如果下载不下来重新下载 如果还是下载不了 就换源
下载 解压opencv
- 可以先下载后放入 /home/pi/Downloads目录下
下载地址 opencv-3.4.0.zip
opencv_contrib-3.4.0.zip
或者是使用wegt下载
- 打开终端 进入/home/pi/Downloads目录
cd /home/pi/Downloads
然后使用wegt下载
wget https://github.com/Itseez/opencv/archive/3.4.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
如果下载慢 可以到我的云盘上下载 地址
2. 解压 (要在 /home/pi/Downloads目录下)
sudo unzip opencv-3.4.0.zip opencv_contrib-3.4.0.zip
设置编译参数
- 进入 /home/pi/Downloadsopencv-3.4.0 文件夹下
cd /home/pi/Downloadsopencv-3.4.0
- 创建文件夹 build 并进入
sudo mkdir build
cd build/
- 输入编译参数
sudo 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=/home/pi/Downloads/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=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include ..
如果不懂Cmake的编译规则 就按照上面的路径 进行操作 这个地方就不需要改了
回车之后会进行下载一些文件之类的 进行配置Cmake
- 如果cmake成功 跳过下面的进行编译
- 如果cmake 失败
倒数第三行 显示如下 这说明有问题需要重新做
Configuring incomplete,errors occurred!
(分析失败原因 如果是有很多文件没下载下来则进行换源)
如果cmake错误后,应该将build文件(里面有生成的makefile文件,和可执行文件)中的所有内容删除,
修改CMakelist.txt后,再进行cmake
编译
(占空间 并且费时间 四五个小时左右)
- 进入build目录下
cd /home/pi/Downloads/opencv-3.4.0/build
- 使用命令编译
sudo make
-
编译出现的错误 下面单独讲
-
编译到100% 成功后
-
安装
sudo make install
6. 更新动态链接库
sudo ldconfig
到这里,OpenCV的编译完成!
参考 子豪兄教你在树莓派上安装OpenCV
参考树莓派学习(三)基于OpenCv的人脸识别
参考
编译过程中出现的错误
编译出现的问题都是缺少文件或者路径不对,通过自行下载或者复制对应文件到对应路径解决。
缺失文件 #include"boostdesc_bgm.i
/home/pi/opencv_contrib-3.4.1/modules/xfeatures2d/src/boostdesc.cpp:653:37: fatal error: boostdesc_bgm.i: 没有那个文件或目录
#include "boostdesc_bgm.i"
^
compilation terminated. ....
原因 :下载文件失败
解决办法:下载好文件放到目录中
-
下载好之后 放入/home/pi/Downloads/ (可以使用ftp工具上传或者rz命令上传)
-
解压使用unzip命令
cd /home/pi/Downloads/
sudo unzip opencv3_cmake_files.zip -
将文件夹里面所有后缀为i的文件 放入上面提到的文件夹内
上面所说的找到文件的 目录是这个 所以这个也就是目标目录
/home/pi/opencv_contrib-3.4.1/modules/xfeatures2d/src/
需要复制的文件也就是
/home/pi/Downloads/opencv3_cmake_files/* .i
(具体情况要具体分析 目标目录可能不一致) -
使用复制命令
sudo cp -i /home/pi/Downloads/opencv3_cmake_files/*.i /home/pi/opencv_contrib-3.4.1/modules/xfeatures2d/src/
- 重新编译 再次使用下面的命令进行编译
sudo make
之前编译好的会很快过去
路径出错 include “opencv2/xfeatures2d/cuda.hpp”
打印出的错误信息:
/home/pi/opencv-3.4.1/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
#include "opencv2/xfeatures2d/cuda.hpp"
^
compilation terminated.
路径出错 (代码中引用的是相对路径 因此会出错)
第一种方法 改为绝对路径
- 根据给的路径找到matchers.hpp的文件并打开,找到第42行如下:
#opencv2/xfeatures2d/cuda.hpp
- 找到opencv2/xfeatures2d/cuda.hpp的绝对路径
使用find命令
sudo find / -name ‘cuda.hpp’ -print
找到路径 /home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.php
- 将相对路径改为绝对路径
上面的第42行改为
#/home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.php
第二种解决办法 找到文件复制过来
上面已经讲了使用find命令找到文件
如果不想动代码 可以直接将 opencv2/xfeatures2d/cuda.hpp 复制到 目标出错的目录下
其中复制的不仅仅是cuda.hpp 而是 opencv2整个目录
使用find命令找到下载的文件
解决问题后 使用
sudo make
进行编译
验证opencv
安装并没出错后
进入终端 输入
python3
import cv2
如果没报错 就说明大部分opencv没问题
使用opencv打开树莓派摄像头
原因: ls /dev/无 video0
可以输入 sudo ls /dev/
看输出的有没有video0
1、输入 sudo raspi-config
先在interfacing option里把camera接口打开(enable)。
2、如果使用的是树莓派摄像头,还需输入sudo modprobe bcm2835-v4l2
输入这行命令,发现/dev/下已经有摄像头的设备了。
这句话相当于加载驱动模块,每次开机都要开启,摄像头才能使用。
可以将这条命令放入 /etc/rc.local 文件中,让其自启动。
如果这篇文章帮到了你,可以点赞 收藏,关注我会有更多树莓派 IOT 计算机视觉应用文章!