一、资源包:opencv4.7.0和opencv_contrib4.7.0
二、编译器:12.2.0版本:aarch64-linux-gnu-gcc或gcc
三、OpenCV编译与安装
1、安装必要的依赖库
树莓派上,更新系统
sudo apt update
2、安装构建工具和图像 I/O 库
sudo apt install build-essential cmake pkg-config
sudo apt install libjpeg-dev libtiff5-dev libpng-dev
3、安装视频 I/O 库
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt install libxvidcore-dev libx264-dev
4、安装 GTK 图形界面库(用于显示图像等)
sudo apt install libgtk2.0-dev libgtk-3-dev
5、安装优化的线性代数库
sudo apt install libatlas-base-dev gfortran
6、安装cmake-gui
sudo apt-get install cmake-gui
可能出现错误:
解决办法:
xhost +local:username
username为登录树莓派的用户名
或者将文件夹opencv4.7.0和opencv_contrib4.7.0权限提升。
7、下载源码包
树莓派上,在/home/pi目录或其它用户主目录下,下载opencv4.7.0和opencv_contrib4.7.0源码:OpenCV 的官方 GitHub 仓库下载源代码。在终端中运行以下命令:
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.7.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.7.0.zip
8、解压OpenCV源码包
sudo unzip opencv-4.7.0.zip
sudo unzip opencv_contrib-4.7.0.zip
9、安装 OpenCV
(1)进入源码目录,创新build目录
cd opencv-4.7.0/
sudo mkdir build
(2)进入bulid/文件夹,启动cmake-gui,并进行配置
cd build/
sudo cmake-gui
(3)配置opencv源码路径、配置opencv/build路径,勾选 Advanced。
(4)点击configure、选择Unix Makefiles、选择Use default native compilers、点击Finish,具体如下所示。
(5)在Search中搜索下面内容,并分别打上对勾:
a) Search:TIFF,勾选BUILD_TIFF;
b) Search:PNG,勾选BUILD_PNG;
c) Search:JPEG,勾选BUILD_JPEG;
d) Search:EXTRA,选择/home/pi/opencv_contrib-4.7.0/modules
e) Search:INSTALL,选择/usr/local
f) Search:GTK,勾选GTK_2_X
g) Search:PKG,选择勾选
h) Search:QT,选择勾选
i) Search:OPENGL,选择勾选
j) 先点击Configure,再点击Generate,再点击×退出cmake-gui。
(6) 编译OpenCV
在build/文件夹下,执行
sudo make -j4
(这里的 -j4 表示使用 4 个线程进行编译,可以根据树莓派的性能调整这个数字。)编译时间大约1小时以上
(7) 安装OpenCV
sudo make install
安装结束后可以在/usr/local目录下看到OpenCV的头文件和库目录。
四、基于OpenCV设计简单Qt程序
- 创建 Qt工程,命名为xxx_robot
2.创建成功后,修改.pro文件,添加头文件目录和库路径,如下所示
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv2
LIBS += -lwiringPi \
LIBS +=$$system(pkg-config --libs opencv4)
3.在 main.cpp 里编写代码,在工程目录中存入一张图片,本例程为通过OpenCV显示图像,参考代码如下所示
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
// 读入一张图片
Mat img=imread("/home/pi/robot/robot/robot.jpg");
// 创建一个名为 "机器人团子"窗口
namedWindow("机器人团子"); //(窗口名称,窗口标识)
// 在窗口中显示机器人团子
imshow("机器人团子",img);//(显示窗口的名称,显示的图片)
// “暂停程序,等待一个按键输入”,waitKey(1000),表示程序暂停执行1000毫秒!
waitKey(0);
return 0;
}
4.点击上图中左侧绿色三角,编译运行程序,可看到编译运行结果,表示代码运行正确,OpenCV环境搭建完成