【问题标题】:How to play video on google colab with opencv?如何使用opencv在google colab上播放视频?
【发布时间】:2020-02-15 05:41:11
【问题描述】:

我正在 google colab 上使用 Mask RCNN 进行与对象检测相关的项目。我有一个视频上传到我的 colab。我想在运行时使用openCV处理它时将它显示为视频。我想做cv2.VideoCapture('FILE_NAME') 在本地机器上做的事情。有什么办法吗?

【问题讨论】:

    标签: python opencv computer-vision jupyter google-colaboratory


    【解决方案1】:

    我找到了方法。但是速度很慢。

    from IPython.display import clear_output, Image
    import base64
    
    def arrayShow (imageArray):
        ret, png = cv2.imencode('.png', imageArray)
        encoded = base64.b64encode(png)
        return Image(data=encoded.decode('ascii'))
    
    video_capture = cv2.VideoCapture(VIDEO_SOURCE)
    while video_capture.isOpened():
        success, frame = video_capture.read()
    
        clear_output(wait=True)
        img = arrayShow(frame)
        display(img)
    
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    

    代码无法准确播放视频。它只是显示新帧并从输出中删除旧帧。

    【讨论】:

      【解决方案2】:

      我最近遇到了同样的问题。虽然我不相信有一种方法可以像在本地一样显示“实时”视频,但您可以做的是一次渲染一帧并将其显示在笔记本的输出中。

      与 OP 的 answer 不同,它不会对图像进行编码,也不会从控制台清除前一帧。

      from google.colab.patches import cv2_imshow
      import cv2
      
      # Download sample video
      !curl -o sample.mp4 https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4
      
      cap = cv2.VideoCapture('sample.mp4')
      while cap.isOpened():
          ret, image = cap.read()
      
          if not ret:
            break
      
          cv2_imshow(image) # Note cv2_imshow, not cv2.imshow
      
          cv2.waitKey(1) & 0xff
      
      cv2.destroyAllWindows()
      cap.release()
      

      这个notebook 可能会有所帮助,或者the code above as a notebook

      【讨论】:

      • 我想在collab一次播放所有视频,你有那个代码sn-p吗??
      【解决方案3】:

      你可以试试:

      from google.colab.patches import cv2_imshow
      cv2_imshow(img)
      

      【讨论】:

      • 你能解释一下 - OP 在使用这个 sn-p 后可以期待什么?
      • @ArunVinoth 我已经回答了我自己的问题。
      • 这不适用于 colab 中的视频,仅适用于图像
      【解决方案4】:
      from IPython.display import HTML
      from base64 import b64encode
      
      video_path = '/content/drive/MyDrive/Data_proc/ball.mp4'
      
      mp4 = open(video_path, "rb").read()
      data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
      HTML(f"""
      <video width=400 controls><source src="{data_url}" type="video/mp4">
      </video>""")
      

      【讨论】:

      • 这个答案没有解释它为什么起作用,如何从中学习?
      • 是colab中播放视频的代码。您必须在播放之前在 colab 中渲染视频播放器。
      【解决方案5】:

      这是 google colab 上的命令: ret, frame = input_video.read() 希望能帮到你

      【讨论】:

        猜你喜欢
        • 2020-08-17
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-21
        • 2015-04-13
        • 2016-11-24
        • 2021-03-11
        相关资源
        最近更新 更多