微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenCV 读取 MP4 给出全零帧

如何解决OpenCV 读取 MP4 给出全零帧

我一直在尝试使用 python-opencv 逐帧读取这个 mp4 文件。以下是我的代码

import cv2
filename = '<absolute path>/HandWash_014_A_11_G_03.mp4'

cap = cv2.VideoCapture(filename)

while(cap.isOpened()):
    ret,frame = cap.read()
    print(frame,ret)
    if ret:
        cv2.imshow("frame",frame)
        cv2.waitKey(1)
    else:
        break

cap.release()
cv2.destroyAllWindows()

当我在阅读后立即打印帧时,我得到如下所有零数组。然后我尝试读取同一文件夹中的不同 mp4 文件,但成功返回非零值。另外,请注意这个有问题的文件可以使用媒体播放器成功播放(我试过 Quicktime 播放器)。

    [[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 ...

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]]

我实际上是在尝试逐帧从这个 kaggle 数据集中读取文件 https://www.kaggle.com/realtimear/hand-wash-dataset

请帮我理解这里的问题。非常感谢任何帮助。

解决方法

有时视频文件已损坏或与 opencv 不兼容。视频播放器可以读取它,因为它旨在尝试补偿这些问题文件。最好的镜头是使用手刹或类似方法重新编码视频。通常可以为我解决问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。