树莓派官方摄像头模块 V3 的配置及 libcamera 的使用教程

树莓派官方摄像头模块 Camera Module 3 发布之后,有些朋友使用 libcamera 软件库来拍摄会发现报错:

[0:11:48.500378214] [2153]  INFO Camera camera_manager.cpp:299 libcamera v0.0.4+22-923f5d70
ERROR: *** no cameras available ***

假设你已经在断电状态下正确连接好了摄像头和树莓派主板的 CSI 接口。下面我们介绍在树莓派官方系统 Raspberry Pi OS 下使用 V3 版摄像头(IMX708 传感器)的正确方法。

给树莓派上电进入系统,首先依然需要运行 sudo raspi-config 命令进入系统配置工具,选择 Interfacing Options – Legacy Camera 菜单禁用 Legacy 摄像头。

然后运行下面的命令修改配置文件:

sudo nano /boot/config.txt

找到下面几行配置,修改后面的数值如下。如果某行没有找到,可在文件末尾添加一行。

camera_auto_detect=0
gpu_mem=128

在最后面再加一行,手动配置摄像头传感器型号:

dtoverlay=imx708

CTRL+X 后键入 Y 回车保存。

运行下面的命令修改 /etc/modules 内容:

sudo nano /etc/modules

在文件末尾添加一行:

bcm2835-v4l2

同样 CTRL+X 后键入 Y 回车保存。

运行命令 sudo reboot 重启树莓派。

然后就可以使用 libcamera 工具中的命令来拍摄了。

libcamera-hello 命令相当于相机的 “hello world” 应用程序。它启动相机,显示预览窗口,而不执行任何其他操作。例如:

libcamera-hello

应显示预览窗口约 5 秒钟。-t 选项允许用户选择窗口的显示时间长度,其中 以毫秒为单位。若要无限期运行预览,请使用:

libcamera-hello -t 0

可以通过单击窗口的关闭按钮或在终端中使用 Ctrl-C 来停止预览。

libcamera-jpeg

libcamera-jpeg 命令是一个简单的静止图像捕获应用程序。它故意避免了 libcamera-still 的一些附加功能,它试图更充分地模仿 raspistill。因此,代码明显更容易理解,并且在实践中仍然提供许多相同的功能。

要捕获全分辨率 JPEG 图像,请使用:

libcamera-jpeg -o test.jpg

这将显示大约 5 秒的预览,然后捕获全分辨率 JPEG 图像到文件 test.jpg。

-t 选项 可用于更改预览显示的时间长度,而 –width 和 –height 选项将更改捕获的静止图像的分辨率。例如:

libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480

将捕获 VGA 大小的图像。

libcamera-still

libcamera-still 与 libcamera-jpeg 非常相似,但支持更多的 raspistill 选项。和以前一样,可以使用:

libcamera-still -o test.jpg

编码
libcamera-still 允许以多种不同的格式保存文件。它支持 png 和 bmp 编码。它还允许将文件另存为 RGB 或 YUV 像素的二进制转储,完全没有编码或文件格式。在后一种情况下,读取文件的应用程序必须自行了解像素排列。

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

请注意,保存图像的格式取决于 -e(等效的 –encoding)选项,并且不会根据输出文件名自动选择。

原始图像(Raw)捕获

原始图像是由图像传感器直接生成的图像,在ISP(图像信号处理器)或任何 CPU 内核对其应用任何处理之前。对于彩色图像传感器,这些通常是拜耳格式的图像。请注意,原始图像与我们之前看到的已处理但未编码的 RGB 或 YUV 图像有很大不同。

捕获原始图像使用下面的命令:

libcamera-still -r -o test.jpg

在这里,-r 选项(也称为 –raw)表示捕获原始图像以及 JPEG。实际上,原始图像是生成JPEG的确切图像。原始图像以 DNG(Adobe Digital Negative)格式保存,并与许多标准应用程序兼容,例如 dcraw 或 RawTherapee。原始图像将保存到具有相同名称但扩展名为 .dng 的文件中,因此在本例中为 test.dng。

libcamera-vid

Libcamera-vid 是视频捕获应用程序。默认情况下,它使用树莓派的硬件 H.264 编码器。它将显示一个预览窗口,并将编码的比特流写入指定的输出。例如,要将 10 秒的视频写入文件,请使用:

libcamera-vid -t 10000 -o test.h264

生成的文件可以使用 vlc 播放(以及其他应用程序)

vlc test.h264

请注意,这是一个未打包的视频比特流,它没有包装在任何类型的容器格式(例如 mp4 文件)中。–save-pts 选项可用于输出帧时间戳,以便随后可以使用 mkvmerge 等工具将比特流转换为适当的格式。

libcamera-vid -o test.h264 --save-pts timestamps.txt

然后,如果你想要一个 MKV 文件:

mkvmerge -o test.mkv --timecodes 0:timestamps.txt test.h264

有关 libcamera 的更多使用方法可以参考官方文档

订购链接:http://link.nxez.com/buy/rpi-camera



坐沙发

发表评论

你的邮件地址不会公开


*