一、环境介绍
开发板:树莓派4B
OpenCV版本: 3.4.9
操作系统:开发板原始自带的32位操作系统
pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux pi@raspberrypi:~ $ cat /proc/version Linux version 4.19.97-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1294 SMP Thu Jan 30 13:21:14 GMT 2020
编译好的库可直接使用:https://download.csdn.net/download/xiaolong1126626497/12451302
二、编译安装OpenCV
2.1 下载OpenCV
OpenCV下载地址: https://opencv.org/releases/
我这里下载的是:3.4.9版本
压缩包的名称: opencv-3.4.9.zip
操作树莓派连接方式:使用windows远程桌面连接。
远程桌面不会看这里:https://blog.csdn.net/xiaolong1126626497/article/details/106099194
2.2 安装cmake
编译OpenCV源码需要使用cmake,为了方便编译,这里下载安装cmake图像界面版本,方便可视化配置。
命令行执行的命令如下:
sudo apt-get install cmake sudo apt install cmake-qt-gui sudo apt-get install libgtk2.0-dev sudo apt-get install pkg-config
2.3 编译前说明
树莓派4B本身的空间不太够用,我这里是外插了一张16GB的SD-通过USB读卡器接入,并在PC机上将这张SD卡格式化成ext4文件系统,在树莓派上解压编译OpenCV源码都在这张SD卡空间上进行。
注意: 一定要ext4文件系统,不能是FAT或者NTFS之类的文件系统。
2.4 编译配置OpenCV源码
这一步执行完要没有报错才行,也就是界面上不能报错,有错误就根据提示解决错误。
执行完第2步之后,就关闭软件,进入到第编译目录下,进行编译安装。
1.pi@raspberrypi:/media/pi/sdcard/work/opencv-3.4.9/Build $cd /media/pi/sdcard/work/opencv-3.4.9/Build pi@raspberrypi:/media/pi/sdcard/work/opencv-3.4.9/Build $make && make install
编译成功之后,将生成的库文件和头文件全部拷贝到/use目录下一份。
2.5 测试OpenCV : 使用g++编译示例代码
在OpenCV的samples/cpp/example_cmake 目录下,有一份测试示例代码,效果是打开摄像头。
pi@raspberrypi:/media/pi/sdcard/work/opencv-3.4.9/samples/cpp/example_cmake $ g++ example.cpp -lopencv_calib3d -lopencv_objdetect -lopencv_core -lopencv_photo -lopencv_dnn -lopencv_shape -lopencv_features2d -lopencv_stitching -lopencv_flann -lopencv_superres -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_imgproc -lopencv_videostab -lopencv_ml pi@raspberrypi:/media/pi/sdcard/work/opencv-3.4.9/samples/cpp/example_cmake $ pi@raspberrypi:/media/pi/sdcard/work/opencv-3.4.9/samples/cpp/example_cmake $ ./a.out
要测试这份代码,可以先找一个USB摄像头插在树莓派4B的USB口上。
2.6 测试python的OpenCV模块
进入python3的命令行,导入cv2模块,查看OpenCV版本。
python2 也是正常的。
2.7 使用python调用OpenCV模块,打开电脑摄像头
import numpy as np import cv2 #调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2 cap=cv2.VideoCapture(0) while True: #从摄像头读取图片 sucess,img=cap.read() #转为灰度图片 #gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #显示摄像头,背景是灰度。 #cv2.imshow("img",gray) cv2.imshow("img",img) #显示彩图 #保持画面的持续。 k=cv2.waitKey(1) if k == 27: #通过esc键退出摄像 cv2.destroyAllWindows() break elif k==ord("s"): #通过s键保存图片,并退出。 cv2.imwrite("image2.jpg",img) cv2.destroyAllWindows() break #关闭摄像头 cap.release()