cv2_imshow() 不会在 Google Colab 中呈现视频文件

Ste*_*eve 2 python opencv opencv3.0 google-colaboratory

我正在尝试将一些 OpenCV 图像分析(使用 Python3)从本地 Jupyter 笔记本迁移到 Google Colab。

我的原始 Jupyter Notebook 代码运行良好,视频呈现良好(在其自己的窗口中)(请参阅下面的代码子集)。此代码使用 cv2.imshow() 来渲染视频。在 Colab 中使用相同的“cv2.imshow()”代码时,视频不会呈现。

基于这个建议- 我改用 Colab 中的 cv2_imshow() 。但是,此更改导致垂直系列 470 个图像(每帧 1 个),而不是正在播放的视频。

这是colab 文件链接

谁能概述如何在 Colab 中渲染 OpenCV 处理的视频?

import numpy as np
import cv2

cap = cv2.VideoCapture(r"C:\.....Blocks.mp4")
counter = 0
while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    cv2.imshow(frame)

    print("Frame number: " + str(counter))
    counter = counter+1
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

Anw*_*vic 5

该方法cv2.imshow()显示图像。因此,您所做的基本上是逐帧读取整个视频并显示该帧。要查看整个视频,您需要将这些帧写回VideoWriter对象。

因此,VideoWriterwhile循环之前创建一个对象:

res=(360,240) #resulotion
fourcc = cv2.VideoWriter_fourcc(*'MP4V') #codec
out = cv2.VideoWriter('video.mp4', fourcc, 20.0, res)
Run Code Online (Sandbox Code Playgroud)

使用write()方法处理后写帧

out.write(frame)
Run Code Online (Sandbox Code Playgroud)

最后,以与释放对象相同的方式释放对象 VideoCapture

out.release()
Run Code Online (Sandbox Code Playgroud)

现在,一个名为video.mp4的视频将写入您的文件中