树莓派Buster系统编译安装opencv(一)
工作任务:在树莓派上搭opencv环境实现条形码的实时识别
树莓派:Zero W
内存卡:32G
其他:HDIM线,显示器,键盘,鼠标,外接摄像头
一.配置wifi
二.换源
树莓派服务器在国外,国内用户在使用中,update和install过程中会非常慢甚至网络断联报错,在你没有魔法上网 时,换源是友好的选择
准备换源
首先查看自己树莓派版本,树莓派版本,树莓派版本
重要的事情说三遍!!!
在终端里输入
lsb_release -a
buster即为当前操作系统版本
确定完版本后
打开配置sources.list文件
在终端 输入
sudo nano /etc/apt/sources.list
用#注释掉原文件内容,用以下内容取代Ctrl + O 保存 Ctrl + X 退出
用清华大学的软件源举例:(buster版本)
Ps:Ctrl+Shift+V可以在终端粘贴
# 编辑 sudo nano /etc/apt/sources.list 文件,删除或注释原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
# 编辑 sudo nano /etc/apt/sources.list.d/raspi.list 文件,删除或注释原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
完成后更新一下软件源列表
sudo apt-get update
sudo apt-get upgrade #此项更新安装包
三.搭建树莓派环境
1.拓展TF内存卡
Warning:搭建OpenCV环境,树莓派至少16GTF卡,需要拓展TF的存储空间至整个TF卡空间
查看当前树莓派空间分配
df -h #查看当前树莓派空间分配
继续输入
sudo raspi-config
确定—finish保存回车ENTER(树莓派会重新启动)
sudo reboot #也可以手动重启
Tips:换源(python软件源)
之前的文章虽然已经 换源(清华)但是在我们搭建环境过程中为了能更稳定 ,我们再次换源,但这次只换Python软件源即可
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #清华源
pip install pip -U
sudo reboot #重启树莓派
2.修改树莓默认Python版本
打开我们的终端输入
python
我发现默认版本是Python2.7.16(输入Ctrl + Z退出python环境)
继续输入
python3
python3版本为3.7.3**,所以修改默认版本(python)为python3.7
输入
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
Keep goingsudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
再次输入python
发现修改默认版本成功
3.扩展交互空间
安装OpenCV3编译部分是最头痛的,Up主自己在编译中很多次都会卡在40%左右假死挂起然后报错,部分报错原因可能是由于交互空间不足导致的,在之前树莓派3B上尝试了很多次都假死挂起(内存太小),在此我们先增大Swap交互空间
在终端中输入
free -m #查看当前内存
继续输入
sudo nano /etc/dphys-swapfile
将CONF_SWAPSIZE = 改为1024
Ctrl + O再Enter再Ctrl + X保存退出
继续输入
sudo /etc/init.d/dphys-swapfile restart
增大Swap交互空间成功
4.安装工具包
一个一个安装
OpenCV编译工具
sudo apt install build-essential
sudo apt install cmake
sudo apt install git
sudo apt install pkg-config
OpenCV图像包
sudo apt-get install libtiff5-dev #tif格式图像工具包
sudo apt-get install libjasper-dev #JPEG-2000图像工具包
sudo apt-get install libjpeg8-dev #jpeg格式图像工具包
sudo apt-get install libpng12-dev #png图像工具包
OpenCV视频I/O包
sudo apt-get install libavcodec-dev
sudo apt-get install libv4l-dev
sudo apt-get install libavformat-dev
sudo apt-get install libswscale-dev
OpenCV-gtk2.0
sudo apt-get install libgtk2.0-dev #安装gtk2.0
优化函数包
sudo apt-get install libatlas-base-dev gfortran #安装优化函数包
以上依赖环境包安装好以后就开始准备配置Cmake参数
本次安装OpenCV4.0.0版,是从GitHub上Git clone的方式下载
mkdir ~/opencv_build #在opencv里新建build文件夹
cd ~/opencv_build
wget -O opencv-4.0.0.zip https://github.com/Itseez/opencv/archive/4.0.0.zip
#下载opencv 4.0.0包
wget -O opencv_contrib-4.0.0.zip https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip
#下载opencv-contrib包文件
将下载好的opencv-4.0.0.zip 和opencv_contrib-4.0.0.zip 放入刚新建的opencv_build文件夹下,解压
unzip opencv-4.0.0.zip
unzip opencv_contrib-4.0.0.zip
#解压文件
进入opencv-4.0.0文件夹,新建build文件夹,存放cmake编译时产生的临时数据
cd ~/opencv_build/opencv-4.0.0
mkdir build
cd /build
5.设置编译参数
在文件解压完毕后,保证文件路径没有问题:向我这样的结构:opencv_build/opencv4.0.0/build/以下的操作均需要在build的这个文件夹进行:
接下来准备设置编译参数,编译的语句安全起见要加 sudo
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv_build/opencv_contrib-4.0.0/modules \
#根据自己contrib中modules文件夹的地址进行配置
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_CXX_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=ON ..
这里是编译的代码的详细注解
CMAKE_BUILD_TYPE #编译方式
CMAKE_INSTALL_PREFIX #安装目录
OPENCV_EXTRA_MODULES_PATH #加载额外模块
INSTALL_PYTHON_EXAMPLES #安装官方python例程
BUILD_EXAMPLES #编译例程
OPENCV_GENERATE_PKGCONFIG : #配置pkg-config , OpenCV 4 默认下生成”opencv4.pc“
-D INSTALL_C_EXAMPLES=ON #如果需要C语言的编程案例在末尾加上
设置编译参数完成看到结尾像这样,没有报错且都为done的时候,编译部分结束
到这里,在成功编译的情况下建议把编译的文件夹进行一个备份:(/build)
cd ..
cp -r build ./buildres #在当前目录备份build为buildres文件夹
6.编译
cd /build
sudo make -j4 2>&1 | tee make.log
如果幸运,将会出现以下界面,编译完成
通过!!!
接着执行
sudo make install
安装成功
7.配置OpenCV到Python环境变量
在整个安装完OpenCV环境下,打开终端进行测试
输入 : Python
进入Python的运行环境
输入import cv2
如果没有错误的话说明可以正常运行opencv的环境了,提示找不到库时候,说明需要将opencv的环境配置到Python中
退出Python环境,在终端输入
cd /usr/local/python/cv2
进入到Python cv2的文件下,继续输入ls 查看当前的文件夹下的文件
有一个文件夹是Python-3.7 ,进入这个文件夹 /usr/local/python/cv2/python-3.7(根据自己的文件版本进行调整)
这个文件夹里面有一个文件 cv2.cpython-37m-arm-linux-gnueabihf.so将这个文件复制到这个路径下/usr/local/lib/python3.7/dist-packages
sudo cp cv2.cpython-37m-arm-linux-gnueabihf.so /usr/local/lib/python3.7/dist-packages
8.更新环境变量
sudo ldconfig
打开bash.bashrc配置文件
sudo nano /etc/bash.bashrc
进去后,在末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
重启树莓派sudo reboot now 结束!!!
最后检测一下
测试代码:
import cv2
import numpy as np
img = cv2.imread(“你测试的图片路径”)
cv2.namedWindows(“TestImage”)
cv2.imshow("TestImage",img)
cv2.waitKey(0)
cv2.destoryAllWindow()
如果不幸,将会有各种编译错误,网上有很多常见错误解决方法。我最后没能解决,没有编译成功,放弃编译安装。
换个简单的方式安装,见树莓派Buster系统快速安装opencv(二)
转自:https://blog.csdn.net/weixin_50679163/article/details/110227418
https://blog.csdn.net/weixin_50679163/article/details/109998296