我使用python 3.6和最新版本的opencv
我有一个名为mat
的numpy矩阵,形状为(158,27648)
mat
的每一行均以灰度表示单个帧的像素值。
因此获得第一帧:
frame_one = mat[1,:].reshape(144,192)
每帧的大小为(144,192)
当我使用时:
plt.imshow(frame_one)
我得到了我期望得到的结果-视频中的一帧
现在,我想将所有文件保存到.avi视频中。我尝试过:
import cv2
out = cv2.VideoWriter('output6.avi', 1145656920, 15, (144, 192), 0)
for i in range(156):
frame = mat[i,:].reshape(144,192)
frame = np.expand_dims(frame, axis = 2)
frame = (np.concatenate([frame, frame, frame], axis = 2) / np.max(frame)) * 255
#frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
out.write(frame.astype(int))
out.release()
以及此代码的许多版本:如果不进行max和255乘法的除法运算,则仅用其中之一进行设置,而没有额外的尺寸,切换视频阅读器的高度和重量,将编解码器更改为-1。我不断收到媒体播放器无法读取的视频。