BytesIO流到Numpy数组? (Picamera)

时间:2014-07-25 02:57:55

标签: python arrays opencv numpy stream

我正在使用Picamera和Raspberry Pi拍照,然后分析它们之间的差异。我正在使用以下代码捕获到BytesIO流,然后将其读入Numpy数组(从this guide借用):

stream = io.BytesIO()
with picamera.PiCamera() as camera:
    camera.resolution = (100, 60)
    camera.framerate = 30
    while not done:
        camera.capture(stream, format='jpeg', use_video_port=True)
        if previousData == None:
            previousData = cv2.imdecode(np.fromstring(stream.getvalue(), dtype=np.uint8), 1)
            previousData = previousData[:, :, ::-1]
        else:
            timeStartNumpy = time.time()
            currentData = cv2.imdecode(np.fromstring(stream.getvalue(), dtype=np.uint8), 1)
            currentData = previousData[:, :, ::-1]
            ....(omitted analysis code)....
            previousData = currentData

分析代码可以正常工作,但它会重复使用相同的帧。我假设我从流中读取的方式一定是个问题,但我在Python中没有足够的经验知道如何更改它。任何提示或帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

else分支中,您将当前捕获的帧分配给名称currentDate,只是为了在previousData的下一行中替换它。因此,之前行中捕获的帧将丢失,因为没有名称或其他参考指向它。只需删除第二个作业。