请务必确保自己烧录的树莓派镜像是最新的Raspberry Pi OS,不然会出很多问题,如果你不怕麻烦使用的是19年之前的Raspberry系统,你可以看最后的opencv配置十分繁琐,而且可能存在一些解决不了的问题,十分建议使用最新Raspberry Pi OS镜像。
关于编辑器,用自带的Thonny就ok,不要自己去下其他的ide会出很多问题,或者用自带的Text Editor也可以,写完记得ctrl+s保存再在命令行python xxx.py运行就ok
关于pycharm,我不建议用,太卡了!!!如果你真的想试试
- 确保自己的default-jdk版本>11
- pycharm-community下载2021年或者之前版本(不然全是报错)
- 根据自己的操作系统下载32bit / 64bitArm 的Linux版本
- tar -zxvf pycharm-community-2021.1.3.tar.gz 直接解压
- cd ~/pycharm-community-2021.1.3.tar.gz/bin 进入目录
- ./pycharm.sh 运行pycharm
关于Anaconda,我不建议用
miniconda可以下载但是适配的Python版本过低,还有不少的环境问题需要解决。
完全版的Anaconda只适配arm64架构,但是3B+的主板配64arm系统使用会出现不适配的情况因此不能正确编译,如果你是4B及以上的版本可以试试,不过我估计很卡。
在进行环境配置之前,请确定自己已经连上wifi
开机后在右上角wifi找到自己的网,输入密码连接即可(wifi名会出现中文乱码,中文会转化成Unicode后转化成ASCII,随缘找或者把wifi名字改成英文+数字的组合更好找)
一、环境搭建
打开终端
首先需要升级和更新系统,以确保系统版本最新:
1 2
| sudo apt-get update sudo apt-get upgrade
|
接下来安装必要的库和工具:
1 2 3 4
| sudo apt-get install python3-opencv sudo pip3 install numpy sudo pip3 install pyqt5 sudo apt-get install vim
|
python3-opencv
:OpenCV库是进行图像处理和计算机视觉的重要工具。
numpy
:Numpy库提供了对大型多维数组的支持以及许多数学函数。一般系统都会配备好。
pyqt5
:PyQt5库是用于创建GUI的Python库。一般系统都会配备好。
vim
:Vim编辑器是一种高效的文本编辑器。
二、测试相机
在树莓派上测试相机之前,需要启用相机模块。打开终端并输入以下命令:
然后按照以下步骤进行设置:
- 选择
Interface Options
后回车。
- 选择
Legacy Camera
后回车。
- 选择
yes
。(提示Legacy camera support is enabled,代表启动成功)
- 点击
OK
,然后按两次 →
键选择 Finish
。
- 这里会提示reboot,点击yes重启才会生效
在根目录下创建一个testCamera.py文件
vim使用提示,输入i后ctrl+shift+v可以粘贴代码进去编辑器,按esc后输入:wq可以保存退出
(会用ssh的话用finalshell很方便,ssh需要在sudo raspi-config的interface options里面打开。不会用的话用微信传输网页版、邮箱都可以。)
现在可以使用以下Python代码测试相机:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import cv2
# 打开摄像头 cap = cv2.VideoCapture(0)
# 检查摄像头是否已经打开 if not cap.isOpened(): print("无法打开摄像头") exit()
# 设置摄像头参数 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
# 循环读取摄像头图像 while True: # 读取当前帧 ret, frame = cap.read()
# 检查是否成功读取帧 if not ret: print("无法读取摄像头图像") break
# 显示当前帧 cv2.imshow("Video", frame)
# 等待按键 if cv2.waitKey(1) == ord('q'): break
# 释放摄像头 cap.release()
# 关闭所有窗口 cv2.destroyAllWindows()
|
完成保存后使用以下命令运行程序:
这样就可以检查摄像头是否可用并测试树莓派的相机模块。正常的话图像如下:
之后返回命令行ctrl+c即可退出窗口。
到这里相机测试就结束了
附:旧版本Raspberry配置OpenCV3
如果你是用的是2019年之前的raspberry进行,可以按照下面配置opencv3,真的不建议,我自己做了两天都才修完bug,之后换了最新的Raspberry Pi OS 2023.5.4直接下载opencv3就ok了,完全不用这么麻烦,里面做了一些内存上的优化,想试试可以看下面。
一、展开文件系统
1 2 3 4
| sudo raspi-config //进入后先回车,然后键盘右键两下back,键盘右键再两下finsh sudo reboot //重启 df -h //看下内存 sudo apt-get purge wolfram-engine //内存小的话可以清理,不然可以不管
|
二、安装依赖项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| //0、更新软件包、升级软件包 sudo apt-get update sudo apt-get upgrade
//1、安装一些开发人员工具,包括CMake,这有助于我们配置OpenCV sudo apt-get install build-essential cmake pkg-config
//2、安装一些映像I/O包,这些包允许我们从磁盘加载各种映像文件格式。此类文件格式的例子包括JPEG、PNG、TIFF等: sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev
//3、就像我们需要图像I/O包一样,我们也需要视频I/O包。这些库允许我们从磁盘上读取各种视频文件格式,以及直接处理视频流 sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev
//4、OpenCV库附带一个名为highgui用于在我们的屏幕上显示图像并构建基本的GUI。为了编译highgui模块,我们需要安装GTK开发库: sudo apt-get install libgtk2.0-dev
//5、通过安装一些额外的依赖项,可以进一步优化OpenCV内部的许多操作(矩阵操作) sudo apt-get install libatlas-base-dev gfortran
//6、我们同时安装Python 2.7和Python 3头文件,这样我们就可以使用Python绑定编译OpenCV sudo apt-get install python2.7-dev python3-dev
|
三、下载opencv源代码
1 2 3 4 5 6 7 8
| //1、从官网上下载opencv3 cd ~ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip unzip opencv.zip
//2、完全安装OpenCV 3(例如,可以访问SIFT和SURF等功能),因此我们还需要抓取opencv_contrib存储库: wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip unzip opencv_contrib.zip
|
四、python2.7 or python3(我用的Python3)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| 1、我们首先需要安装pip内核 wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py
2、下载虚拟环境 sudo pip3 install virtualenv virtualenvwrapper -i https://mirrors.aliyun.com/pypi/simple/ sudo rm -rf ~/.cache/pip
3、配置~/.profile(使用下面二者之一,推荐用下面那部分比较方便) echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile
//或者把下面的内容写到~/.profile文件内 //# virtualenv and virtualenvwrapper //export WORKON_HOME=$HOME/.virtualenvs //export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 //source /usr/local/bin/virtualenvwrapper.sh
4、配置完之后应用配置 source ~/.profile
5、创建虚拟环境 mkvirtualenv cv -p python3
6、怎么进入虚拟环境 source ~/.profile workon cv
7、安装Numpy(注意要在cv3环境内) pip3 install numpy
|
五、编译和安装OpenCV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| 1、进入虚拟环境 workon cv
2、使用CMake设置我们的构建 cd ~/opencv-3.3.0/ mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_opencv_python3=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D PYTHON3_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.9.so \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/huaxi/.virtualenvs/cv/lib/python3.9/site-packages/numpy/core/include \ -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \ -D WITH_OPENEXR=OFF \ -DCMAKE_CXX_FLAGS="-Wa,-mbig-obj"\ -D BUILD_EXAMPLES=ON ..
3、配置交换空间,使用四个核心进行编译 # 打开你的/etc/dphys-swapfile然后编辑CONF_SWAPSIZE变量:
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024
4、激活新的交换空间,重新启动交换服务: sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
5、编译OpenCV make -j4
6、在Raspberry Pi 3上安装OpenCV 3 sudo make install sudo ldconfig
|
六、完成OpenCV的安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 对于python2.7 $ ls -l /usr/local/lib/python2.7/site-packages/ 总计1852 -rw-r--r-- 1根词根1895772 3月20日20:00 cv2.so
$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
对于python3 $ ls -l /usr/local/lib/python3.9/dist-packages/ 总计1852 -rw-r--r-- 1根词根1895932 3月20日 21:51 cv2.cpython-34m.so $ cd /usr/local/lib/python3.5/site-packages/ $ sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
|
七、测试opencv3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| $ source ~/.profile $ workon cv3 $ python
import cv2 cv2.\__version__ '3.3.0'
2、!!!确保前面正确安装执行下面可以清理内存,可以不执行,但一定不要乱执行!!! rm -rf opencv-3.3.0 opencv_contrib-3.3.0
3、取消所有所有编译,配置交换空间,使用四个核心进行编译 #打开你的/etc/dphys-swapfile然后编辑CONF_SWAPSIZE变量:
set size to absolute value, leaving empty (default) then uses computed value
#you most likely don't want this, unless you have an special disk situation CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024 #注释掉1024MB的线路,不然以后会很卡
4、激活新的交换空间,重新启动交换服务: sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
|