树莓派4B:编译安装OpenCV3.4.7 (使用源码形式进行编译安装)

2022-01-12 10:46:53 浏览数 (1)

一、环境介绍

开发板:树莓派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()

0 人点赞