前言
因为最近准备往树莓派上放一个基于OpenCV的项目,在PC上测试没有问题后放在树莓派上pip install -r requirements.txt
的时候却提示:
|
|
再去网上搜索后才发现opencv-python
这个库并没有提供ARM架构的二进制包。不过偶然发现还有一个专门为树莓派提供的第三方依赖库
,可是这里目前只提供基于Python3.5且版本号太低无法满足我当前项目的要求,那接下来就只剩下源码自己独立编译这条路了。
环境准备
-
Python3.7.4
-
需要安装Numpy:
pip install numpy
-
扩展文件系统
-
输入
sudo raspi-config
-
选择
Advanced Options
-
选择
Expand Filesystem
-
-
扩充Swap
-
编辑文件:
sudo vi /etc/dphys-swapfile
,将CONF_SWAPSIZE
的值修改成2048
-
重启dphys-swapfile:
sudo /etc/init.d/dphys-swapfile restart
-
-
更新系统的包
1
sudo apt-get update
-
在系统中安装相关依赖
1 2 3 4 5 6 7 8
sudo apt-get install build-essential cmake unzip pkg-config sudo apt-get install libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev sudo apt-get install libgtk-3-dev sudo apt-get install libcanberra-gtk* sudo apt-get install libatlas-base-dev gfortran sudo apt-get install python3-dev
-
下载源码并解压
1 2 3 4
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.1.zip wget -O opencv_contrib.zip https://codeload.github.com/opencv/opencv_contrib/zip/4.1.1 unzip opencv.zip unzip opencv_contrib.zip
编译安装
-
在
opencv-4.1.1
中创建build
文件夹,用于存放源码编译后的产物1 2 3
cd opencv-4.1.1 mkdir build cd build
-
配置CMake参数
1 2 3 4 5 6 7 8 9 10
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.1.1/modules -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_FFMPEG=ON -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_GSTREAMER=ON -D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic -D BUILD_EXAMPLES=ON ..
-
在CMake检查结束后,会打印出详细的信息,需要检查其中
Python3
部分的各个参数是否都有值。 -
确认没问题后即开始编译OpenCV,建议可以在这时候使用
screen
命令创建一个可以在后台持续执行的会话。 -
可以在make后增加
-j2
参数指定使用2个核心参与编译,这里使用单核编译,即不加任何参数。敲完命令后就需要等待大约七八小时后才能完成(Raspberry Pi 3B)1
sudo make
-
编译结束并且没有报错信息后,需要修改一下配置,
modules/python3/CMakeFiles/opencv_python3.dir/link.txt
中第一行增加-latomic
参数1
vi build/modules/python3/CMakeFiles/opencv_python3.dir/link.txt
在第一行中的起始中
/usr/bin/c++ -fPIC -fsigned-char -W -Wall
修改为/usr/bin/c++ -fPIC -latomic -fsigned-char -W -Wall
-
安装OpenCV
1 2
sudo make install sudo ldconfig
检查安装结果
|
|