树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔

树莓派4b OpenCV安装(真实有效)——授人鱼不如授人以渔

    • 前言
    • 巨人的肩膀
    • 树莓派配置
        • 扩容
        • 换源(我选的清华大学源):
        • 下载依赖
    • Opecv下载
        • 离线安装方法:
        • 使用wget下载OpenCV源码方法(我没用过这个方法可能慢):
    • Opencv安装
        • 准备阶段
        • 设置cmake编译参数
        • 备份
        • 补充缺失
        • 编译
        • 解决错误
        • 安装
    • 检验

前言

我必须承认我是站在巨人的肩膀上,为了在树莓派上配置Opencv读了好多博客废了好多精力(也有很大一部分因为我太菜太笨了),踩了不少坑慢慢的学习才终于配置上了。本教程主要目的教你如何解决报错(不是替换文件而是修改源文件)报错原因多半是因为路径问题,每个人问题都不一样这也是折磨我这么久的原因。这也是我第一次写博客有问题可以评论及时告诉我会修改问题的。

巨人的肩膀

相关网址:

树莓派初始化:
子豪兄:第3讲:一劳永逸配置树莓派.md
清华大学开源软件镜像站

Opencv配置:
子豪兄教你在树莓派上安装OpenCV
树莓派3和4B安装OpenCV教程(编译源码,一次成功)提供安装好OpenCV的系统镜像(必须谢谢这个老哥的博客帮助巨大)
树莓派4的opencv4.1.0–python3.7的开发环境安装

Opencv下载地址(一定要一个版本!!):
https://opencv.org/releases/page/2/(选Sources)
https://github.com/opencv/opencv_contrib/releases(选zip)

树莓派配置

扩容

先扩容(我用的16G的卡,8G的就别看了买16G+的卡去,装完占用13G):

sudo raspi-config

树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第1张图片
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第2张图片

换源(我选的清华大学源):

网址:
清华大学源(最新的系统镜像应该都是Debian10,ps:子豪兄的那个有点老重做一下)
老规矩用’ # '备注以前的最后加新的然后 ctrl+o ctrl+x

sudo nano /etc/apt/sources.list

树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第3张图片

sudo nano /etc/apt/sources.list.d/raspi.list

树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第4张图片

下载依赖

sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libjasper-dev
sudo apt-get install libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran

下载完以上文件我的空间还是很大的
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第5张图片

Opecv下载

下载Opencv文件与缺失文件

离线安装方法:

Opencv下载地址(一定要一个版本!!原网站链接有迅雷会员的可以用迅雷):
https://opencv.org/releases/page/2/(选Sources)
https://github.com/opencv/opencv_contrib/releases(选zip)

3.4.6与4.1.0含有缺失文件(有百度云会员的可以用这个)
链接: https://pan.baidu.com/s/1MMssaWZESNPeyeTTirF_Bw
提取码: qemx

只要缺失文件(我不会别的方法给你们了,只能这样了)
链接: https://pan.baidu.com/s/1f_k6d5DrPt6twfB5ao7x-Q
提取码: 5u76

使用wget下载OpenCV源码方法(我没用过这个方法可能慢):

// 下载OpenCV
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
 
// 解压OpenCV
unzip opencv-3.4.3.zip

// 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip

// 解压OpenCV_contrib库:
unzip opencv_contrib-3.4.3.zip

Opencv安装

准备阶段

我这里用3.4.6因为问题比4.1.0的多,都是大同小异的(具体两个版本区别在哪我也不知道)
解压
opencv-3.4.6.zip
opencv_contrib-3.4.6.zip
还有那个缺失文件
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第6张图片
然后(注意路径我自己建了一个Opencv的文件夹,别憨憨的复制粘贴,开个记事本粘记事本上改一下路径,再复制粘贴)

cd ~/Opencv/opencv-3.4.6

新建release文件夹

mkdir release

进入release文件夹

cd release

树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第7张图片

设置cmake编译参数

不要憨憨的复制!!!
先粘在记事本上
也是要改改第五行要修改一下路径(别忘了把我打的提示删了,别把‘ \ ’也删了)

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/Opencv/opencv_contrib-3.4.6/modules \#这一行
-D BUILD_EXAMPLES=ON \
-D WITH_LIBV4L=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \
-D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
..

最后这样
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第8张图片

备份

不要以为不重要,你知道83%的时候他死机了,重启以后他报错文件受损只能重来的苦么还好我当时有备份可以少做一个配置cmake

cd ..
cp -r release ./release1
cd release/

补充缺失

把文件夹 boostdesc_bgm.i,vgg_generated_48.i等 里的所有文件都拷贝到(4.1.0一样免的缺失报错)
opencv_contrib-3.4.6/modules/xfeatures2d/src/
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第9张图片
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第10张图片

编译

sudo make -j4 2>&1 | tee make.log

然后就可以等错误了

解决错误

树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第11张图片
通常都是这一个错误因为头文件路径不对
解决方法就是找到有错误引用的源文件进行修改
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第12张图片
找到这个源文件进行修改
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第13张图片
问题来了这个头文件在什么位置,这个编译流程就是opencv源文件与opencv_contrib互调的过程,在引用头文件的过程特别容易因为路径原因报错(有更懂的大佬可以说一下,我就是在装opencv的时候略懂了一些)xfeatures2d这个文件是在opencv_contrib中的
opencv_contrib-3.4.6/modules/xfeatures2d/
在这个文件夹里的include文件夹里顺着这个"opencv2/xfeatures2d/cuda.hpp"路径走就可以看见cuda.hpp
下一步就是把那个引用改成绝对路径,特别小心别改错了home前面的 ‘ / ’ 总之要非常的小心,确定系统可以顺着路径找过去(也有xfeatures2d文件夹里调用自己文件夹里的头文件出错的情况,方法相同)
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第14张图片
保存,回去按方向键上键倒出那个语句回车继续
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第15张图片
有时候报几次错,原因可能相同,但是文件不同就说明之前改的文件没问题了,看懂他每次报错,再去找再去改,建议就是两个文件夹都打开分开找。
如果出现错误但是不说原因像这样
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第16张图片
你就不管继续开始再跑还没有就再跑 sudo make -j4 2>&1 | tee make.log
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第17张图片
他还是不报错但是错误的位置不同了就说明还是没有报出错来再跑 sudo make -j4 2>&1 | tee make.log
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第18张图片
第三次出来问题了先找到错误的调用,再去xfeatures2d文件夹的include文件夹里找就可以找到xfeatures2d.hpp修改路径即可
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第19张图片
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第20张图片
漫长的等待过后,成功。
树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔_第21张图片

安装

sudo make install

检验

我建议直接实现人脸识别
树莓派
参考网址:
【跟子豪兄趣学python】十行Python代码实现人脸识别

级联分类器路径(我的解决办法就是绝对路径调用)
opencv-3.4.6/data/haarcascades
就在最开始解压的那个opencv-3.4.6里面找(如果有更好的调用方法可以跟我说一下我也是才接触不久)

import cv2
#找一个图片重命名为img,与程序文件放在一个文件夹下(要有人脸啊)
img = cv2.imread('img.jpg',1)
#这里要改用你的绝对路径
face_engine = cv2.CascadeClassifier('/home/pi/Opencv/opencv-3.4.6/data/haarcascades/haarcascade_frontalface_default.xml') 
faces = face_engine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

再次感谢那些巨人的肩膀!!

你可能感兴趣的:(树莓派)