Python 字节流到Numpy阵列?(皮卡梅拉)
我用Picamera和覆盆子皮来拍照,然后分析它们之间的差异。我正在使用以下代码捕获BytesIO流,然后将其读入Numpy数组(借用自):Python 字节流到Numpy阵列?(皮卡梅拉),python,arrays,opencv,numpy,stream,Python,Arrays,Opencv,Numpy,Stream,我用Picamera和覆盆子皮来拍照,然后分析它们之间的差异。我正在使用以下代码捕获BytesIO流,然后将其读入Numpy数组(借用自): 分析代码按照它应该的方式工作,只是它不断重复使用同一帧。我假设这一定是我从流中读取数据的方式有问题,但我在Python方面的经验不足,不知道如何更改它。任何提示或帮助都将不胜感激。在else分支中,您正在将当前捕获的帧分配给名称currentDate,以便在下一行中用以前的数据替换此帧。因此,之前从该行捕获的帧将丢失,因为不再有名称或其他参考点。删除第二个
分析代码按照它应该的方式工作,只是它不断重复使用同一帧。我假设这一定是我从流中读取数据的方式有问题,但我在Python方面的经验不足,不知道如何更改它。任何提示或帮助都将不胜感激。在
else
分支中,您正在将当前捕获的帧分配给名称currentDate
,以便在下一行中用以前的数据替换此帧。因此,之前从该行捕获的帧将丢失,因为不再有名称或其他参考点。删除第二个作业。我忘了提到那行的功能。它在分析单个帧之后出现,但需要使用currentData
进行下一次分析比较。因此,我们用currentData
中的图像替换先前的currentData
,然后取一个新图像作为currentData
。这个过程一直持续到窗口关闭为止(done=true)。有问题的行在省略的部分之前,而不是之后,这显然是该代码中的问题,因为这是代码除了第一个帧之外从不处理任何捕获帧的原因。这句话毫无意义。哇!对我来说,这是一个巨大的错误。我应该更仔细地阅读我自己的代码。
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