Jjpeg图像numpy对象转换为pygam

时间:2018-02-28 13:43:25

标签: python numpy opencv pygame

我正在使用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()

0 个答案:

没有答案