opencv:垂直和水平报告视频高度和宽度相同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv:垂直和水平报告视频高度和宽度相同相关的知识,希望对你有一定的参考价值。
我有一堆来自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 ...谢谢!
答案
显然,我需要做的就是安装最新的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对应于“垂直”(.a.k.a。“肖像”),所以我的问题就解决了。
解析是微不足道的,我认为没有人想要我的代码。只是一个小小的注释:你需要从ffmeg捕获stderr而不是stdout。
谢谢大家!
以上是关于opencv:垂直和水平报告视频高度和宽度相同的主要内容,如果未能解决你的问题,请参考以下文章
使锚标记填充父 flex 元素的 100% 高度和宽度,同时垂直和水平居中