如何使用OpenCV检测垂直视频?

时间:2019-06-18 12:06:47

标签: python opencv video

我有一个想要同时运行横向和纵向视频的面部检测程序。但是,当OpenCV加载垂直视频时,它会自动逆时针旋转它(因此人脸检测不起作用);那么有什么方法可以用OpenCV来获得“真实的”视频尺寸,甚至可以在用OpenCV加载之前得到它吗?

我打印了捕获的视频的尺寸,以确保稍后在程序中不旋转视频,但是使用以下代码,并将“ video.mp4”作为垂直视频,其宽度和高度对应于旋转的视频(宽度>高)。

import cv2

vidcap = cv2.VideoCapture("video.mp4")
print("Width: " + str(vidcap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print("Height: " + str(vidcap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

预期输出:

    Width: 360.0
    Height: 480.0

实际输出:

    Width: 480.0
    Height: 360.0

编辑: 这是我解决此问题的方法:

我使用了软件包 skvideo 来获取视频元数据。尽管元数据始终通过将最大尺寸显示为“宽度”来指示视频分辨率(这对于垂直视频而言并不正确),但我注意到 metadata.keys()的长度随视频的方向,因为我相信垂直视频会自动旋转。这是我用来检测视频方向的代码:

import skvideo.io

metadata = skvideo.io.ffprobe("video.mp4")
if (len(metadata.keys()) == 3):
    vertical = 1
else:
    vertical = 0 # if the video is in landscape, metadata.keys() will have a length of 2

0 个答案:

没有答案