我正在使用pygame创建自己的GUI,并在LCD上显示相机预览。同时我想将摄像机录像保存在文件中。
出于这个原因,我以JPEG格式捕获流,而不是使用JPEG格式的numpy读入缓冲区,而不是使用cv2.decode将其解码为图像。之后我可以把它写成视频。
但是pygame模块不能接受numpy对象,它需要表面元素。我不知道如何将 imageData 转换为 surface 对象,因为 pygame.image.fromstring 可以使用它。
请帮助向pygame.image.fromstring对象提供JPEG图像。
pygame.init()
screen = pygame.display.set_mode((LCD_W,LCD_H))
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output2.avi',fourcc, 30.0, (640,480))
while (True):
camera.capture(stream, use_video_port=True, format='jpeg')
stream.seek(0)
imageData = np.fromstring(stream.getvalue(), dtype=np.uint8)
npImage = cv2.imdecode(imageData, 1)
out.write(npImage)
screen.blit(npImage, # gives error on npImage type
((LCD_W - img.get_width() ) / 2,
(LCD_H - img.get_height()) / 2))
img = pygame.image.fromstring( # gives ValueError saying cannot read
stream.getvalue(),
sizeData[sizeMode][1], 'RGB')
stream.close()