一、环境介绍
开发板:树莓派4B
OpenCV版本: 3.4.9
操作系统:开发板原始自带的32位操作系统
代码语言:javascript复制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图像界面版本,方便可视化配置。
命令行执行的命令如下:
代码语言:javascript复制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步之后,就关闭软件,进入到第编译目录下,进行编译安装。
代码语言:javascript复制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 目录下,有一份测试示例代码,效果是打开摄像头。
代码语言:javascript复制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模块,打开电脑摄像头
代码语言:javascript复制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()