视觉识别方面的应用肯定离不开摄像头,一开始准备使用的快门相机可能不一定行,所以有买一个800万的摄像头:
接下来我们就看一下摄像头方面的驱动应用。
树莓派上最多可以连接两个CIS的摄像头:
最好是在断电状态下正确连接好了摄像头和树莓派主板的 CSI 接口,我选择的是camera0接口:
摄像头的驱动方面,树莓派5自带了 libcamera 库,最新的树莓派系统不需要在 raspi-config 中开启摄像头,安装好摄像头后直接在终端中运行 。
1、检查摄像头
我们先测试一下摄像头是否连接成功了:
sudo libcamera-hello -t 0 --camera 0
失败了,没有发现活跃的摄像头,也就是自动检测没有检测到,我用的是IMX219的摄像头,换一个接口试一下,还是不行:
检查了一下版本:
Raspberry Pi OS Bookworm将相机捕获应用程序从 libcamera-* 改为 rpicam-* ,可能libcamera已经被弃用了,所以使用rpicam试一下:
rpicam-hello --timeout 0
还是不行,这个时候我们需要打开配置文件:
sudo nano /boot/firmware/config.txt
需要修改两处,一个是camera_auto_detect=0,一个是在最后加上dtoverlay=imx219:
最后调整,camera_auto_detect=1就可以,不用修改,最后我链接的cam1接口,那么最后添加的内容是:
dtoverlay=imx219,cam1
Ctrl+O保存后要重启一下树莓派,重启后在启动一下就可以看到画面了:
可以看到画面,这表明摄像头安装成功。
2、拍照功能
使用以下指令拍一张照片:
rpicam-jpeg --output test.jpg --timeout 2000
注意,这里面其中“--timeout 5000”部分是可选的,主要目的是用于延时拍照的,单位是ms,然后“image.jpg”是拍摄好后图像的名称,不过最终失败了,调用摄像头没有问题,不过图片保存失败了:
我们可以拍摄不同格式的照片:
libcamera-still -e png -o test.png libcamera-still -e bmp -o test.bmp libcamera-still -e rgb -o test.data libcamera-still -e yuv420 -o test.data
libcamera-still 允许以多种不同的格式保存文件,支持 png 和 bmp 编码,还允许将文件另存为 RGB 或 YUV 像素的二进制转储,完全没有编码或文件格式,不过需要注意,在后一种情况下,读取文件的应用程序必须自行了解像素排列。保存图像的格式取决于 -e(等效的 –encoding)选项,并且不会根据输出文件名自动选择。
3、视频录制功能Libcamera-vid 是视频捕获应用程序。默认情况下,它使用树莓派的硬件 H.264 编码器。它将显示一个预览窗口,并将编码的比特流写入指定的输出。例如,要将 10 秒的视频写入文件,使用如下命令:
libcamera-vid -t 10000 -o test.h264
生成的文件可以使用 vlc 播放(以及其他应用程序) 不过旧版本的 vlc 可以正确播放 H.264 文件,但最近的版本却不行,只能显示几帧,甚至可能是乱码。我们可以直接录制MP4格式的:
rpicam-vid -t 10s -o test.mp4
这个就能播放:
4、摄像头功能
使用如下命令
libcamera-still -t 0
其中“-t 0”表示一直打开: