gpt4 book ai didi

python - 使用 Python 和 Raspberry Pi 快速捕获和将 2D 图像堆叠为 3D numpy 数组

转载 作者:行者123 更新时间:2023-11-28 19:18:01 27 4
gpt4 key购买 nike

我正在做一个 Raspberry Pi 项目,我需要每秒拍摄大约 30 张图像(没有电影)并使用 numpy 数组将每个 2D 图像堆叠到 3D 阵列,而不将每个 2D 捕获保存为文件(因为很慢)。

我发现这个 Python 代码可以尽可能快地拍摄图像,但我不知道如何将所有图像快速堆叠为 3D 图像堆栈。

import io
import time
import picamera
#from PIL import Image

def outputs():
stream = io.BytesIO()
for i in range(40):
# This returns the stream for the camera to capture to
yield stream
# Once the capture is complete, the loop continues here
# (read up on generator functions in Python to understand
# the yield statement). Here you could do some processing
# on the image...
#stream.seek(0)
#img = Image.open(stream)
# Finally, reset the stream for the next capture
stream.seek(0)
stream.truncate()

with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.framerate = 80
time.sleep(2)
start = time.time()
camera.capture_sequence(outputs(), 'jpeg', use_video_port=True)
finish = time.time()
print('Captured 40 images at %.2ffps' % (40 / (finish - start)))

你们中有人知道如何使用 Python 和 Raspberry Pi 相机模块将这段代码中拍摄的 2D 图像堆叠到 3D numpy 数组吗?无需将每个 2D 捕获保存为文件

最好的问候,奥古斯丁

最佳答案

这可能不能像复制粘贴一样直接工作,但应该演示如何预分配内存并在那里写入结果。我不熟悉 pycamera 但示例 here显示了内存中流的一些不同用法。

import numpy as np

def outputs(resolution, n_pics, clr_channels=3):
# Note that the first dimension is height and second is width
images = np.zeros((resolution[1], resolution[0], clr_channels, n_pics), dtype=np.uint8)
stream = io.BytesIO()

for i in range(n_pics):
yield stream
images[:,:,:,i] = Image.open(stream)

stream.seek(0)
stream.truncate()

关于python - 使用 Python 和 Raspberry Pi 快速捕获和将 2D 图像堆叠为 3D numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com