[Raspberry Pi] Raspberry Pi 4配置OpenCV4.6.0和ncnn环境(32-bit operation system)

本教程参考如下几篇文章

1 调整GPU Memory

树莓派默认的GPU Memory大小有点小,需要手动增大。

  • 找到树莓派左下角和win类似的按钮->Preferences->Raspberry Pi Configuration->Performance->GPU Memory
  • 将数值修改为128(我的初始值是76)

2 检查EEPROM

to get the current status
$ sudo rpi-eeprom-update
如果出现 BOOTLOADER: up-to-data 则不用后续的操作
反之,若出现BOOTLOADER: update required 则需要后续更新

if needed, to update the firmware
$ sudo rpi-eeprom-update -a
$ sudo reboot

3 版本确认

uname -a

4 安装依赖

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install cmake gfortran
$ sudo apt-get install python3-dev python3-numpy
$ sudo apt-get install libjpeg-dev libtiff-dev libgif-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libgtk2.0-dev libcanberra-gtk*
$ sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev
$ sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev
$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt-get install libjasper-dev liblapack-dev libhdf5-dev
$ sudo apt-get install gcc-arm* protobuf-compiler
The latest Debian 11, Bullseye don't support python2 full
don't try to install if you're having a Raspberry Bullseye OS
$ sudo apt-get install python-dev python-numpy

5 下载OpenCV

$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.6.0.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.6.0.zip

$ unzip opencv.zip
$ unzip opencv_contrib.zip

为了方便之后的操作
$ mv opencv-4.4.0 opencv
$ mv opencv_contrib-4.4.0 opencv_contrib

6 Build Make

原教程这里提供了一个Virtual environment的选项,因为我不应该不用有版本切换,且我感觉用Virtual environment比较麻烦(可能是因为不熟练)。所以我没有使用Virtual environment,需要的朋友可以看前言中的教程一的相关部分。

$ cd ~/opencv/
$ mkdir build
$ cd build

注意,如果之前包解压的位置与本教程不同,OPENCV_EXTRA_MODULES_PATH需要对准自己的位置
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
        -D ENABLE_NEON=ON \
        -D ENABLE_VFPV3=ON \
        -D WITH_OPENMP=ON \
        -D BUILD_TIFF=ON \
        -D WITH_FFMPEG=ON \
        -D WITH_TBB=ON \
        -D BUILD_TBB=ON \
        -D BUILD_TESTS=OFF \
        -D WITH_EIGEN=OFF \
        -D WITH_GSTREAMER=OFF \
        -D WITH_V4L=ON \
        -D WITH_LIBV4L=ON \
        -D WITH_VTK=OFF \
        -D WITH_QT=OFF \
        -D OPENCV_ENABLE_NONFREE=ON \
        -D INSTALL_C_EXAMPLES=OFF \
        -D INSTALL_PYTHON_EXAMPLES=OFF \
        -D BUILD_NEW_PYTHON_SUPPORT=ON \
        -D BUILD_opencv_python3=TRUE \
        -D OPENCV_GENERATE_PKGCONFIG=ON \
        -D BUILD_EXAMPLES=OFF ..

如果不出意外,CMake会给出一个正常的报告:)。

7 Make

在make之前,我们需要先增大一下交换区的大小

$ sudo vim /etc/dphys-swapfile

将 CONF_SWAPSIZE=100改为1024

$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

j后面的数字是希望使用的核数,就用4就好。如果想快点可以使用更多的核。

$ make -j4

官方估计时间是1.15h,这期间可以去做点其他时间。
如果不出意外,make成功之后(可以忽略中间出现的warning)进行如下操作。

$ sudo make install
$ sudo ldconfig
cleaning (frees 300 KB)
$ make clean
$ sudo apt-get update

安装好之后要将swap区域改回去,减少对存储卡的损耗注,(注:可以在安装完ncnn再修改)。

$ sudo vim/etc/dphys-swapfile

设置 CONF_SWAPSIZE=100

$ sudo reboot

下面操作可选,我存储空间够就没做。

just a tip to save some space
$ sudo rm -rf ~/opencv
$ sudo rm -rf ~/opencv_contrib

8 环境配置

修改opencv.conf文件

sudo gedit /etc/ld.so.conf.d/opencv.conf

然后在文件中输入

/usr/local/lib

更新共享链接库

sudo ldconfig

配置bash

sudo gedit /etc/bash.bashrc

在最后加上

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存后退出,终端输入以下命令使配置生效

source ~/.bashrc
sudo updatedb

如果出现command not found问题,则安装一下即可

sudo apt install mlocate
sudo updatedb

9 检查

如果你是在虚拟环境中安装的,要先workon到对应的虚拟环境中(类似于anaconda的conda activate)。

$ python3
>>> import cv2
>>> cv2.__version__
'4.6.0'
>>> exit()
pkg-config --modversion opencv4

查看是否打印对应版本信息

4.6.0

10 测试


#include
#include

using namespace cv;

int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out \n");
        return -1;
    }
    Mat image;
    image = imread( argv[1], 1 );
    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}
g++  test.cpp  -o  test  pkg-config --cflags --libs opencv4

运行(注:需要自备一张test.jpg在当前目录,可以任意命名)

./test test.jpg

11 卸载

如果需要删除当前版本,执行以下操作即可:

$ cd ~/opencv
$ sudo rm -r build

1 版本确认

uname -a

确认返回的infomation中有armv7l(32-bit OS)。如果是aarch64(64-bit OS),则可参考教程二。

2 安装

依次输入即可

check for updates
$ sudo apt-get update
$ sudo apt-get upgrade

install dependencies
$ sudo apt-get install cmake wget
$ sudo apt-get install libprotobuf-dev protobuf-compiler

download ncnn
$ git clone --depth=1 https://github.com/Tencent/ncnn.git

install ncnn
$ cd ncnn
$ mkdir build
$ cd build

build 32-bit ncnn
$ cmake -D NCNN_DISABLE_RTTI=OFF \
        -D NCNN_BUILD_TOOLS=ON \
        -D CMAKE_EXE_LINKER_FLAGS=-ldl \
        -D CMAKE_TOOLCHAIN_FILE=../toolchains/pi3.toolchain.cmake ..

$ make -j4
$ make install

copy output to dirs
$ sudo mkdir /usr/local/lib/ncnn
$ sudo cp -r install/include/ncnn /usr/local/include/ncnn
$ sudo cp -r install/lib/libncnn.a /usr/local/lib/ncnn/libncnn.a

3 ncnn+dnn

Original: https://blog.csdn.net/ztmajor/article/details/126660205
Author: ztmajor
Title: [Raspberry Pi] Raspberry Pi 4配置OpenCV4.6.0和ncnn环境(32-bit operation system)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/703038/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球