树莓派3b安装opencv

本文详细记录了使用树莓派3B+搭建OpenCV环境的全过程,包括系统烧录、摄像头配置、依赖安装及编译调试等关键步骤,并分享了解决过程中遇到的问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

树莓派3b搭建OpenCV环境

记录一下本人使用树莓派3b弄OpenCV时的过程和遇到的坑,大体参照微雪的教程进行的https://www.waveshare.net/study/article-900-1.html

烧录系统

本人采用的是树莓派官方2020年12月2日发布的2020-12-02-raspios-buster-armhf-full.zip

相关设置

启用摄像头

本人使用的是CSI摄像头,USB摄像头和网络摄像头也都可以,可自行搜索相关使用方法。
进入树莓派配置

sudo raspi-config

选择

Interfacing Options->Camera->Yes

启用摄像头。

设置视频流设备

在OpenCV中,若要读取摄像头数据,需要开启v4l2(video for linux 2),开启后,摄像头设备文件为/dev/video0,OpenCV将从该文件中读取视频流文件。

开启方法如下:

sudo vi /etc/modules

在末尾添加

bcm2835-v4l2

更换软件源和pip源为清华源

不再赘述

重启设备

sudo reboot

安装库和依赖

安装numpy

sudo pip3 install numpy

安装OpenCV所需依赖

sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y

下载OpenCV

本次安装时为4.5.0版本,官方地址
需要下载包括OpenCV与OpenCV_Contrib两个仓库
OpenCV仓库:Github地址
OpenCV_Contrib仓库:Github地址
由于国内下载较满,本人采用的是Gitee极速下载
https://gitee.com/mirrors/opencv
https://gitee.com/mirrors/opencv_contrib

git clone https://gitee.com/mirrors/opencv
git clone https://gitee.com/mirrors/opencv_contrib

也可以通过外部下载后转移到树莓派上,这一点不影响,注意文件目录就好。

下载boostdesc_bgm.i等文件

这里就是遇到的一个问题了,编译过程中提示缺少这个文件,错误提示:~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory
参考的这里
总共缺了以下几个文件,都需要拷贝:

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

放到 opencv_contrib/modules/xfeatures2d/src/ 路径下

修改CMake.txt

这是遇到的第二个坑了,编译过程中出现错误提示
opencv_contrib缺少boostdesc_bgm.i;atal error: features2d/test/test_detectors_regressio
查看发现有这个文件,在 modules 目录下

find -name test_detectors_regression.impl.hpp

网上博主的解决方式简单粗暴,修改 opencv/CMakeLists.txt 文件
在567 行后插入

include_directories("modules")

当然我不是在第567行插入的,我是在他本身的 include(cmake/OpenCVMinDepVersions.cmake) 后面写的

include(cmake/OpenCVMinDepVersions.cmake)
include_directories("modules")

更改树莓派虚拟内存

这是第三个坑了,虚拟内存溢出,报错:fatal error:Killed signal terminated program cc1plus

free -h

查看内存情况 Swap为99M,使用99M
把100M的虚拟内存改为1G,实际上好像需要使用到160M+,设置成200M好像就可以了,保险起见还是设置了1G,反正SD还足够大

sudo vi /etc/dphys-swapfile

找到 CONF_SWAPSIZE=100
100 改为 1024
重启树莓派。

配置Cmake

切换目录创建build文件夹

cd /home/pi/opencv-4.5.0/opencv
mkdir build
cd build

配置Cmake,执行以下命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv-4.5.0/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON \
-D WITH_LIBV4L=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \
-D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
..

注意,以上命令需要根据您具体的软件环境进行修改,否则很可能报错。

  • CMAKE_BUILD_TYPE=RELEASE \ 代表编译类型为发行版本
  • CMAKE_INSTALL_PREFIX=/usr/local \ 安装路径
  • INSTALL_C_EXAMPLES=ON \ C demo
  • INSTALL_PYTHON_EXAMPLES=ON \ Python demo
  • OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv-4.5.0/opencv_contrib/modules \ OpenCV Contrib路径
  • BUILD_EXAMPLES=ON \ 编译demo
  • WITH_LIBV4L=ON \ 开启Video for Linux
  • PYTHON3_EXECUTABLE=/usr/bin/python3.7 \ Python3路径
  • PYTHON_INCLUDE_DIR=/usr/include/python3.7 \ Python3 include文件夹
  • PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ Python3库
  • PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ Python3 Numpy安装路径

编译

一般都是编译过程中遇到错误,并且编译时间很长,大约6到7小时,期间注意树莓派散热就好。

sudo make

安装

sudo make install

等一会安装完成。

测试

使用python3脚本进行测试,参考微雪课堂https://www.waveshare.net/study/article-900-1.html

#!/usr/bin/env python

'''
Waveshare OpenCV Tutorial
00_Test_OpenCV.py
A demo to show whether The OpenCV and CSI camera is well installed
'''

import numpy as np
import cv2

def main():
    print("OpenCV Version:{}".format(cv2.__version__))
    # 0: use CSI camera,1:use USB camera
    cap = cv2.VideoCapture(0)
    if(not cap.isOpened()):
        print("can't open this camera")

    while(True):
        ret, FrameImage = cap.read()
        if ret == True:
            # change to gray image
            GrayImage = cv2.cvtColor(FrameImage, cv2.COLOR_BGR2GRAY)
            # blur the image 
            BlurImage = cv2.blur(GrayImage,(7,7))
            # use canny to detect contour
            CannyImage = cv2.Canny(BlurImage,3,9)
            # show the image
            cv2.imshow('Camera Capture',CannyImage)
            #Press Q to quit
            if (cv2.waitKey(1)) == ord('q'):
                cap.release()
                break
        else:
            break

if __name__ == '__main__':
    print(__doc__)
    main()
    # Release resource
    cv2.destroyAllWindows()

执行后可看到测试图像,至此完成。


更新一下,如果有人和我硬件环境一样,不想再编译了的,我把我编译过的包发上来,下载后解压到home/pi/目录下,前面配置完成后跳过编译过程,直接进入/home/pi/opencv-4.5.0/opencv/build sudo make install安装就好了,我在另一个树莓派上配置后直接安装测试可以。
在这里插入图片描述

网盘链接: https://pan.baidu.com/s/1aV8m4kip7NlkUYTJdMVVEA
提取码: mbb1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值