我有一堆来自iPhone的视频,我正在尝试使用opencv以编程方式获取其宽度和高度。这是我的代码:
import os, glob
import cv2
ff = glob.glob("*.m??") + glob.glob("*.M??")
for f in ff:
cap = cv2.VideoCapture(f)
w, h = (int(cap.get(i)) for i in (3, 4))
cap.release()
print("%s: %dx%d" % (f, w, h))
问题是,结果始终是相同的:1920x1080,-不管电影是水平(1920 * 1080)还是垂直(我希望1080 * 1920)。
有什么办法解决此问题吗?也许某处有一个旗标来表明它是Horiz还是Vert?我什么都没找到 at opencv docs ... 谢谢!
答案 0 :(得分:0)
显然,我要做的只是安装最新的ffmpeg(这花了点功夫:)。
ffmpeg -i <flnm>
除其他外,输出其中包含“旋转”的行,如下所示:
Metadata: rotate : 90 creation_time : 2015-12-09T00:28:42.000000Z handler_name : Core Media Data Handler encoder : H.264
我发现了四种情况:旋转的值90、180、270,或者缺少“旋转”的行(==无旋转)。根据我的需要,90和270对应于“垂直”(也称为“人像”),因此我的问题得以解决。
解析是微不足道的,我不认为有人在这里想要我的代码。只需注意一点:您需要捕获stderr而不是ffmeg的stdout。
谢谢!