我试图用python编写一个3D灰度f32 numpy数组(outputStack)作为视频(例如,.avi,.mp4)。但是,当我在默认的Windows 10应用程序(“电影和电视”)中播放视频时,视频会播放高度带状、难看且无法识别的视频
重要的是,我的output.avi具有预期的维度、FPS和时间长度。文件大小为252584KB。这是我的密码:
(H,W) = np.shape(outputStack[0, :, :])
FPS = 10
seconds = int((np.shape(outputStack[:, 0, 0])[0]) / FPS)
fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
titleTemp = './' + fileName.split('.')[0] + '.avi'
vid = cv2.VideoWriter(titleTemp, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), FPS, (W, H), isColor = False)
for i in range(FPS * seconds):
frameTemp = outputStack[i, :, :]
vid.write(frameTemp)
vid.release()
我还尝试使用cv2.normalize()和cv2.merge()将阵列转换为3通道BGR;这里我用isColor=True调用cv2.VideoWriter(),这会产生类似的结果。在所有情况下,帧在matplotlib中显示良好
我根本不知道出了什么问题。是否cv2.VideoWriter不支持具有0到1值的f32数组?我的编解码器是否以某种方式错误地压缩了我的阵列?是Windows10电影公司吗;电视不支持MJPG编解码器
目前没有回答
相关问题 更多 >
编程相关推荐