有没有一种在 Raspberry Pi 4B 和 HQ 相机模块上使用 raspistill 快速记录图像的方法?

Is there a fast way to record images with raspistill on a Raspberry Pi 4B and HQ Camera module?

我想用 Raspberry Pi HQ 摄像头模块记录多张图像(例如 50 张)。这些图像是用简单的命令行 raspistill -ss 125 -ISO 400 -fli auto -o test.png -e png 记录的。由于我必须记录 .png 文件,因此图像尺寸为 3040x4056。 如果我 运行 一个简单的 bash 脚本,其中包含 50 个命令行,图像之间似乎有很长的“处理时间”。

那么有没有办法在没有任何延迟(或至少非常短的延迟)的情况下一个接一个地记录其中的 50 张图像?

我怀疑您是否可以在命令行上使用 raspistill 执行此操作 - 特别是在尝试快速写入 PNG 图像时。我认为您需要按照以下几行移动到 Python - 改编自 here。请注意,图像是在 RAM 中获取的,因此在获取阶段没有磁盘 I/O。

将以下内容另存为acquire.py

#!/usr/bin/env python3

import time
import picamera
import picamera.array
import numpy as np

# Number of images to acquire
N = 50

# Resolution
w, h = 1024, 768

# List of images (in-memory)
images = []

with picamera.PiCamera() as camera:
    with picamera.array.PiRGBArray(camera) as output:
        camera.resolution = (w, h)
        for frame in range(N):
            camera.capture(output, 'rgb')
            print(f'Captured image {frame+1}/{N}, with size {output.array.shape[1]}x{output.array.shape[0]}')
            images.append(output.array)
            output.truncate(0)

然后使其可执行:

chmod +x acquire.py

和运行与:

./acquire.py

如果你想将图像列表作为 PNG 写入磁盘,你可以使用类似这样的东西(未经测试),在上面代码的末尾添加 PIL:

from PIL import Image

for i, image in enumerate(images):
    PILimage = Image.fromarray(image)
    PILImage.save(f'frame-{i}.png')