cv2.imshow和在colab中写入视频帧

时间:2020-06-28 19:22:12

标签: tensorflow opencv keras google-colaboratory

我正在尝试运行此https://github.com/xamyzhao/timecraft/blob/master/make_timelapse.py

而且colab不支持cv2.imshow,所以我更改了此部分

for i in range(n_samples):
    pred_vid = video_predictor_model.predict(
        [im[np.newaxis], np.ones((1,) + im.shape), np.zeros((1, 5))])
    print(f'Predicted video shape: {pred_vid.shape}')

    pred_vid_im = vis_utils.visualize_video(
        pred_vid[0], normalized=True)

    cv2.imshow(f'Video sample {i+1}', pred_vid_im)
cv2.waitKey()

from google.colab.patches import cv2_imshow

  for i in range(n_samples):
    pred_vid = video_predictor_model.predict(
        [im[np.newaxis], np.ones((1,) + im.shape), np.zeros((1, 5))])
    print(f'Predicted video shape: {pred_vid.shape}')

    pred_vid_im = vis_utils.visualize_video(
        pred_vid[0], normalized=True)

    #cv2.imshow(f'Video sample {i+1}', pred_vid_im)
    cv2_imshow(pred_vid_im)
    cv2.imwrite(f'Video sample {i+1}.jpg', pred_vid_im)

cv2.waitKey(0)
cv2.destroyAllWindows()

但是保存的帧只是黑色的,我不确定为什么

1 个答案:

答案 0 :(得分:1)

这不是google colab问题。 pred_vid_im保留标准化值。因此所有值都将在0到1之间。这就是保存的图像为黑色的原因。 因此,您需要将pred_vid_im乘以255.0。将代码更改为此,

pred_vid_im = vis_utils.visualize_video(pred_vid[0], normalized=True) * 255.0

现在保存的图像将是正确的。