【发布时间】:2021-07-24 21:25:14
【问题描述】:
我阅读了以下帖子 Getting video properties with Python without calling external software 和 How can I identify a video format in Python3? 和 Extract metadata from a Video/Image,因为我的目标是阅读我的 *.mov 视频文件元数据。 我的 cv2 版本是 3.4.3,我正在使用这些讨论中推荐的代码:
import cv2
vid = cv2.VideoCapture( 'test.mov')
height = vid.get(cv2.CAP_PROP_FRAME_HEIGHT) # always 0 in Linux python3
width = vid.get(cv2.CAP_PROP_FRAME_WIDTH) # always 0 in Linux python3
print ("opencv: height:{} width:{}".format( height, width))
但是,高度和宽度都等于 0。这是不可能的。 我究竟做错了什么? 谢谢
【问题讨论】:
-
也许你必须先从流中读取
frame。或者CV2可能无法获取某些视频格式的此信息。不同的格式需要在CV2中使用不同的代码,并且必须有人编写。 -
顺便说一句:据我所知
CV2可能会为此使用ffmpeg或gstream- 所以它也使用external程序。也许直接使用ffmpeg或模块ffmpeg-python或MoviePy会更简单。 -
在
Linxu Mint 20.2上(基于Ubuntu 20.04)我使用ffmpeg将文件转换为.mov、.avi、.mp4并为所有这些cv2给我@ 987654342@ 和width。但是我用的是最新的cv2'4.5.3' -
在您的第一个链接中,我发现您的代码带有文字
MacOS and Linux packages do not support video related functionality (not compiled with FFmpeg)"和... opencv needs the presence of the binary packages of FFmpeg at runtime -
对不起,我在这里有点困惑。 “vid = cv2.VideoCapture('test.mov')”不应该打开/阅读视频吗?它不会触发我的任何错误消息。
标签: python python-3.x cv2