opencv:垂直和水平方向的视频高度和宽度均相同

时间:2018-09-01 16:16:54

标签: opencv video dimensions

我有一堆来自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 ... 谢谢!

1 个答案:

答案 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。

谢谢!