当前位置:网站首页>树莓派OpenCV+OpenCV-contrib
树莓派OpenCV+OpenCV-contrib
2022-07-30 05:43:00 【大头鑫】
树莓派配置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- deb http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi
设置不休眠
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.hpp3.可能还会报错
报错内容:
错误: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上操作)
边栏推荐
- 21. Kotlin Advanced Learning: Implementing Simple Network Access Encapsulation
- 十三、Kotlin进阶学习:内联函数let、also、with、run、apply的用法。
- Flink CDC 实现Postgres到MySQL流式加工传输案例
- 学生成绩管理系统(C语言版)
- Redis 发布/订阅
- The most powerful and most commonly used SQL statements in history
- SQL Server database generation and execution of SQL scripts
- Thread state of five
- 【SQL】SQL 高频面试题英语版(1)
- [HCTF 2018]admin
猜你喜欢
十八、Kotlin进阶学习:1、挂起函数执行的顺序;2、使用 async 和 await 异步执行挂起函数;3、协程的调度器;4、父子协程;
c#下Web3合约空投、转账调用代码
C#下利用开源NPlot绘制股票十字交叉线
Detailed explanation of regular expression syntax and practical examples
Jdbc & Mysql timeout analysis
Servlet basic principles and application of common API methods
CTFSHOW command execution [web29-web124] unfinished to be continued
Usage of exists in sql
Oracle数据库SQL优化详解
Invalid bound statement (not found)出现的原因和解决方法
随机推荐
Flink PostgreSQL CDC configuration and FAQ
MySQL 5.7 安装教程(全步骤、保姆级教程)
mysql删除表中重复数据,(只保留一行)
FastAPI 快速入门
MySQL 特殊语句及优化器
Bypassing the file upload vulnerability
【Spark】Spark 高频面试题英语版(1)
九、Kotlin基础学习:1、Companion的扩展方法和扩展属性;2、一般类的扩展方法和扩展属性;3、委托;
protobuf编码及网络通信应用(一)
Misc of CTF-Memory Analysis (Volatility)
C#预定义数据类型简介
MYSQL一站式学习,看完即学完
Mycat2.0 build tutorial
ClickHouse查询语句详解
MySQL index optimization and failure scenarios
【零基础搞定C语言——导航汇总篇】
Competition WP in May
Understand JDBC in one article
线程的5种状态
The first WebAssembly program