因最近项目要使用树莓派,因此掏出了我吃灰的树莓派 4B,需要配置一下 OpenCV 环境和串口。因为是 Linux 萌新,配置环境踩了不少坑。既然好不容易配置好,赶紧写篇文章记录一下,以免遗忘。

1. 格式化 SD 卡

SD Memory Card Formatter

烧录文件前要先格式化 SD 卡。

2. 树莓派系统烧录

使用官方提供的树莓派镜像烧录器即可。

需要注意的一些坑:

  • 在选择系统的时候,谨慎选择最新版本,因为资料少,坑多,对小白不太友好。
  • 强烈推荐官方的 Raspberry Pi OS ,一开始本人想装 Ubuntu 桌面版,卡的没法用,但是 Raspberry Pi OS 桌面版体验就很好。

可以考虑的一个版本

下载好文件后,可以在烧录器选择本地文件。

3. csi 摄像头

3.1 新版本配置

配置摄像头接口

1
sudo raspi-config

选择 Interfacing Options -> Camera,配置好后系统会提示是否重启,选择重启。

查看当前摄像头是否可用:

1
vcgencmd get_camera

raspistill 指令已经被舍弃了,有关摄像头使用 libcamera 指令:

1
2
3
4
# 打开摄像头几秒
libcamera-hello
# 拍一张照片
libcamera-jpeg -o test.jpg

摄像头识别不到的问题

执行上述命令时,报错 no cameras available。

解决办法

但是我遇到个非常之离谱的问题,文章里说要注释掉 camera_auto_detect=1 ,我反而加上这句话就好了(原本文件中是没有这条语句的)。

3.2 老版本配置

新版本的 bug 真的是非常的多,换了老版本(在 2. 里面给了链接)后,配置起来非常的快。

首先要开启摄像头,可以使用命令行配置

1
sudo raspi-config

也可以在桌面的左上角点击树莓派图标,打开有一个偏好设置,在里面打开摄像头。

设置好后重启 reboot。

raspistill 指令

1
raspistill -t 2000 -o image.jpg

延时 2s 后拍一张照片。

4. ssh

一般树莓派官方的 OS 已经配置好了,如果没有,就下载 ssh 服务

1
sudo apt-get install ssh

开启 ssh

1
sudo service ssh start

设置开机自启动

1
sudo systemctl enable ssh

5. vnc

vnc 是远程桌面,由于需要看摄像头,会很卡,就暂时不用。

6. OpenCV-Python

这一步真的是大坑,也是我为什么推荐不要使用新版本的原因 QwQ,严格按照这篇文章来即可。

https://blog.csdn.net/weixin_45911959/article/details/122709090

安装好 OpenCV 后,可以执行下面指令判断是否安装成功:

1
2
3
python3
>> import cv2
>> cv2.__version__

如果返回当前版本,说明安装成功。

在读取摄像头的第一步是打开一个摄像头,就会有下面一条语句:

1
cap = cv2.VideoCapture(index)

index 是摄像头索引,那么在 Linux 下,摄像头索引如何找?

查看 video 的设备号:

1
ls /dev | grep video*

由于前面已经配置好了 csi 摄像头,因此会有一个 video0,因此该摄像头的索引就是 0。

成功打开摄像头后,就开始尽情地图像处理吧。

7. UART

树莓派引脚图:

image-20230527005624452

配置串口时又有一个坑,树莓派 3B 和 4B 的串口配置是不一样的。

树莓派 3B 的时候,一共有两个串口:

  • 硬件串口:/dev/ttyAMA0
  • mini 串口:/dev/ttyS0

而树莓派 4B 增加了四个硬件串口,就需要修改一些配置。需要注意的是,用户使用的串口千万不能和已经使用的 GPIO 口冲突。

按照 这篇文章 来配置即可。

8. 系统备份

如果好不容易配置好了各种环境,但是之后不小心干了什么东西把系统搞寄了,重来一次就会很崩溃。因此就需要做好系统备份。

包括每次在修改系统有关的文件时,都最好备份一下。

1
cp filename filename.backup

即复制并改名(在原文件名后面加个 backup 后缀表示备份)

树莓派备份脚本

插上 U 盘挂载到 /media 下,然后运行脚本

1
sudo bash back.sh /media/raspberry-back.img

但是本人在树莓派插上 U 盘时,发现系统似乎自动把 U 盘挂载到 media 下了,但是无法通过脚本写入数据。又尝试先把系统备份到脚本所在文件下,然后把文件上传至 U 盘,由于文件太大不是很稳定很容易失败。最后还是用远程传输方式解决。