将BytesIO流转换为Numpy数组?(Picamera)
我正在用树莓派和Picamera拍照,然后分析这些照片之间的差异。我用以下代码把照片保存到一个BytesIO流中,然后再把它读入一个Numpy数组(这个方法是从这个指南上借来的):
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 个回答
2
在else
这个分支里,你把当前捕获的画面赋值给了一个叫currentDate
的名字,但在下一行又用previousData
替换掉了它。所以,之前捕获的画面就没了,因为没有任何名字或者其他方式可以再找到它。你只需要删掉这个第二次赋值的部分就可以了。