树莓派OpenCV+OpenCV-contrib

树莓派安装OpenCV,配置 OpenCV-contribute

1.准备工作

  • 初始系统镜像
    • 下载镜像
      https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
      选择桌面版本,download
      在这里插入图片描述

    • 使用SD-formatter格式化SD卡。

    • 使用balennaEtcher 烧录镜像。

  • 插入SD卡,连接HDMI,开机。
  • 控制台命令
    • 软件更新

      sudo apt-get update
      sudo apt-get upgrade

    • 换源以加速

      sudo nano /etc/apt/sources.list

      在编辑器中加入源

      • deb http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi
        deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi
        在其他源前面加上 # 以屏蔽其他源
        在这里插入图片描述ctrl + o 回车保存
        ctrl + x 退出编辑
        sudo apt-get update
        sudo apt-get upgrade
    • 设置不休眠

      sudo nano /etc/lightdm/lightdm.conf
      找到 [SeatDefaults] 段下的 #xserver-command=X 取消注释。
      修改为 xserver-command=X -s 0 -dpms
      ctrl + o 回车保存;ctrl + x 退出编辑
      重启

    • 设置 swap 扩容

      sudo nano /etc/dphys-swapfile
      把 CONF_SWAPSIZE 改为 2048 或者 4096
      ctrl + o 回车保存;ctrl + x 退出编辑
      sudo /etc/init.d/dphys-swapfile restart
      最后查看大小:free -h
      在这里插入图片描述

2.OpenCV

  • 安装各种包

    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
    sudo apt-get install libavformat-dev
    sudo apt-get install libswscale-dev
    sudo apt-get install libv4l-dev
    sudo apt-get install python3-numpy
    sudo apt-get install python3-dev
    sudo apt-get install libgtk2.0-dev
    sudo apt-get install libatlas-base-dev gfortran
    
    sudo apt-get install libxvidcore-dev libx264-dev
    sudo apt-get install libgtk-3-dev
    sudo apt-get install libhdf5-dev
    sudo apt-get install libqtgui4
    sudo apt-get install libqt4-test
    
    
  • 下载opencv:wget -O opencv-3.4.1.zip
    https://github.com/Itseez/opencv/archive/3.4.1.zip

  • 下载opencv_contrib:wget -O opencv_contrib-3.4.1.zip
    https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip

  • 解压到某一文件夹,我本次是放在 pi/vision 文件下

    cd vision
    cd opencv3.4.1
    mkdir build 作为后续存放 opencv 编译目的地址
    cd build

    执行 cmake 命令

    cmake -DOPENCV_EXTRA_MODULES_PATH=…/…/opencv_contrib-3.4.1/modules …/…/opencv-3.4.1(此处两个点是必须的)

make 完成后执行install(这一步会很久,3B+大概用了6个小时)

sudo make install

完成之后 更新动态链接库

sudo ldconfig

3.OpenCV-contribute 拓展

如果需要用到比如 sift 特征点筛选算法等拓展功能,需要在安装时附上 contribute。

  • 如果遇到 contrib 缺少 boostdesc_bgm.i 等文件
    点我下载:boostdesc_bgm.i 等文件
    下载并解压这些文件,然后把它放进 /home/pi/vision/opencv_contrib-3.4.1/modules/xfeatures2d/src 文件夹下(其中vision文件夹是我存放opencv3.4.1和opencv_contrib-3.4.1的)
    在这里插入图片描述
    重新sudo make install

比较需要注意的地方

/home/pi/vision/opencv_contrib-3.4.1/modules/xfeatures2d/include/opencv2 这个文件夹里面放着xfeatures2d相关文件,cmake是要把它编进release

  • 1.可能遇到 include cuda.hpp错误的情况(有两次,需要找到它提示的cpp或者hpp文件进行修改)
    把对应的 include 相对路径改为绝对路径
    在这里插入图片描述

    matchers.hpp 、stitching.hpp 里的包含有问题,需要改成下边这种绝对路径的形式

    /home/pi/vision/opencv_contrib-3.4.1/modules/xfeatures2d/include/opencv2

  • 2.可能遇到 include xfeatures2d.hpp错误的情况。
    需要包含contrib中的xfeatures2d.hpp

  • 3.可能还会报错

    报错内容:
    错误:make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:56: modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:21149: modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
    make: *** [Makefile:138: all] Error 2

    在这里插入图片描述

4.配置依赖路径

  • 添加库路径(打开conf)

    //这里可以利用你熟悉的编辑器
    sudo nano /etc/ld.so.conf.d/opencv.conf

    添加内容

    //文件可能是一个空文件,不用管这个,直接在文件末尾加上下面的内容就好
    /usr/local/lib

    保存文件修改(ctrl + o 回车),再执行命令使配置生效

    sudo ldconfig

  • 配置 bash

    sudo nano /etc/bash.bashrc

    添加内容

    //在文件末尾添加下面内容
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH

    保存文件修改(ctrl+o, 回车),再执行命令使修改生效

    source /etc/bash.bashrc

5.测试

test.cpp


#include <opencv2/core/utility.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/xfeatures2d.hpp"
#include <iostream>
using namespace cv;
using namespace std;
using namespace xfeatures2d;
int main()
{
Mat Result, Gray, Draw;
vector<KeyPoint> keypoints;
Mat Frame = imread("me.jpg");
if (Frame.empty())
{
cout << "jpg 加载失败,即将退出!" << endl;
return -1;
}
cvtColor(Frame, Gray, COLOR_RGB2GRAY);
Ptr<SiftFeatureDetector> siftFD = SiftFeatureDetector::create();
siftFD->detectAndCompute(Gray, Mat(), keypoints, Draw);
drawKeypoints(Gray, keypoints, Result, Scalar(255, 0, 0), DrawMatchesFlags::DEFAULT);
imshow("Result", Result);
imwrite("Result.jpg", Result);
waitKey(0);
return 0;
}

注意:其中的图片路径是自己的图片路径

  • 编译
    gcc test.cpp -o test `pkg-config --cflags --libs opencv` -lstdc++ -lm
    
  • 运行
    编译后,在对应的目录下,会自动生成可执行文件 test

    ./test 直接运行

6.备份系统

  • 使用 win32 DiskImager把整个raspbian系统读出来,存为 .img镜像。(PC上操作)
  • 使用 pishrink 脚本工具把镜像文件缩小。因为刚刚上一步的img 镜像生成是整张卡生成,我的系统只有13G,但如果是32G卡,那么生成的镜像文件就太大了。(Linux上操作,我是虚拟机的Ubuntu上操作)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值