树莓派采用 4B,内存为 4G 版,如果用 3B+ 或者内存只有 1G 可能会在 OpenCV 编译的时候卡死或者失败,因为内存过小,需要增加虚拟内存。
系统采用树莓派官方系统。
以下安装过程的主要参考网址:
https://ayangyou.com/2019/01/24/raspberrypi_qt_opencv/
首先先安装 QT,安装指令顺序如下(注意按顺序安装):
一般来说,这种方式安装的 QT 为最新版本的 QT。如果需要其他版本的 QT,建议去官网下载手动安装。
$ sudo apt-get install qt5-default
$ sudo apt-get install qtcreator
$ sudo apt-get install qtmultimedia5-dev libpulse-dev
$ sudo apt-get install libqt5multimedia5-plugins
如果出现提示说有未满足的依赖关系则可以尝试通过 aptitude 指令:
$ sudo aptitude install qtmultimedia5-dev libpulse-dev
如果提示说未安装 aptitude 的,安装一下即可:
sudo apt-get install aptitude
如果还是无法解决,建议换源尝试(包括以下构建 OpenCV 相关工具的安装失败),换源参考网址:
https://blog.csdn.net/MrYarnell/article/details/80165920
官方源不要删,可以用 # 注释备用。
建议优先使用官方源,即不更改源,为保证稳定,本文涉及到的所有的安装一般来说官方源都可以下载到的,亲测,如果没有,建议 update 一下:
$ sudo apt-get update
OpenCV 安装指令顺序如下:
首先安装构建 OpenCV 的相关工具,然后再编译 OpenCV 安装。
# 安装build-essential、cmake、git和pkg-config
$ sudo apt-get install build-essential cmake git pkg-config
# 安装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
# 安装视频I/O包
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
# 安装gtk2.0以及相关包
$ sudo apt-get install libgtk2.0-dev
# 优化函数包
$ sudo apt-get install libatlas-base-dev gfortran
下面的几个包可能系统里已经被安装好,手动安装一下以防未安装。
$ sudo apt-get install build-essential pkg-config libavcodec-dev libavformat-dev libswscale-dev
首先要有一个 OpenCV 源码的压缩包,如果没有去官网下载(下载可能比较慢):https://opencv.org/
一般来说选版本最新的,我这里是 OpenCV 4.1.2 版本。
进入 OpenCV 压缩包所在路径,解压 OpenCV:
$ unzip opencv-4.1.2.zip
进入解压后的 opencv 文件夹
$ cd opencv
新建 build 文件夹并进入
$ mkdir build
$ cd build
设置 cmake 参数,安装目录默认各部分分别安装在 /usr/local/ 路径下的 include、bin、lib 三个文件夹下。
$ sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
我就直接不设置路径了,默认路径即可:
$ sudo cmake -D CMAKE_BUILD_TYPE=Release ..
然后编译,这一步会等很久,树莓派发热也会特别厉害,编译期间建议拆掉上壳散热。
$ sudo make -j4
安装:
$ sudo make install
更新动态链接库:
$ sudo ldconfig
最后通过 QT 测试:
新建工程,选择 Non-Qt project 项目中的 Plain C++ Application,在 .pro 文件中直接复制以下内容:
QT += core
QT -= gui
TARGET = opencv_test
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
TEMPLATE = app
SOURCES += \
main.cpp
INCLUDEPATH += /usr/local/include/opencv4 \
/usr/local/include/opencv4/opencv2
LIBS += /usr/local/lib/libopencv_calib3d.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_features2d.so \
/usr/local/lib/libopencv_flann.so \
/usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_imgcodecs.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_ml.so \
/usr/local/lib/libopencv_objdetect.so \
/usr/local/lib/libopencv_photo.so \
/usr/local/lib/libopencv_stitching.so \
/usr/local/lib/libopencv_videoio.so \
/usr/local/lib/libopencv_video.so \
在 main.cpp 文件中,复制以下内容:
注意路径,此程序为打开一个图片。
#include
using namespace std;
int main()
{
cv::Mat image = cv::imread("/home/pi/Pictures/123.bmp", cv::IMREAD_COLOR);
cv::imshow("Lena",image);
cv::waitKey(0);
return 0;
}
如果编译出现错误,注意图片路径与 OpenCV 库文件路径是否引用正确。
如果编译通过,但运行出现自定义执行档的弹窗,弹窗提示:
无法找到执行档,请指定一个。
解决方法是点击菜单栏构建,然后点击重新构建项目。重新构建完之后再重新编译运行即可。
参考网址:
https://blog.csdn.net/qq_35584151/article/details/80670790
至此,程序即可正常运行。
首先进入设置:
$ sudo raspi-config
选择 Interfacing Options
然后选择 Camera
选择 Yes ,即打开摄像头功能。
然后在终端输入:
$ sudo nano /etc/modules-load.d/rpi-camera.conf
打开摄像头配置文件
在里面添加一行:
bcm2835-v4l2
保存重启,即可通过 OpenCV 读取摄像头使用
参考网址:
https://blog.csdn.net/qq_17783559/article/details/81630644