我从adaftut复制了一个脚本,允许在TFT LCD上显示相机流。 但是使用该流我无法保存摄像机录像。
该脚本打开io.BytesIO,而不是将摄像头捕获到该流中,而不是在while循环中关闭流。我无法将视频流保存为视频。 这是代码的一部分:
while(True):
stream = io.BytesIO() # Capture into in-memory stream
camera.capture(stream, use_video_port=True, format='raw')
stream.seek(0)
stream.readinto(yuv) # stream -> YUV buffer
stream.close()
yuv2rgb.convert(yuv, rgb, sizeData[sizeMode][1][0],
sizeData[sizeMode][1][1])
img = pygame.image.frombuffer(rgb[...], 'RGB')
您可以帮助将流保存为录音吗? 我需要同时保存摄像机录像并在LCD TFT上预览摄像机数据。
答案 0 :(得分:2)
Hayk jan,
最有可能你需要使用一些处理视频文件的库。 例如,您可以使用OpenCV将流保存到视频文件中。它的示例可以在answer中找到。对于你的代码,它应该是这样的:
import cv2
# Define the codec and create VideoWriter object
#fourcc = cv2.cv.CV_FOURCC(*'DIVX')
#out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
out = cv2.VideoWriter('output.avi', -1, 20.0, (640,480))
while(True):
stream = io.BytesIO() # Capture into in-memory stream
camera.capture(stream, use_video_port=True, format='raw')
stream.seek(0)
stream.readinto(yuv) # stream -> YUV buffer
stream.close()
yuv2rgb.convert(yuv, rgb, sizeData[sizeMode][1][0],
sizeData[sizeMode][1][1])
img = pygame.image.frombuffer(rgb[...], 'RGB')
out.write(img)
out.release()