一尘不染

opencv-视频看起来不错,但是帧旋转了90度

python

我们将视频保存在移动客户端上,然后将其发送到服务器。在服务器上,我使用以下代码保存框架:

import skvideo.io
import cv2

haar = 
'/home/ubuntu/opencv/data/haarcascades/haarcascade_frontalface_alt.xml'
face_cascade = cv2.CascadeClassifier(haar)

ret = True

video = 'my_video.mov'
i = 0
while ret == True:
    cap = skvideo.io.VideoCapture(video)
    ret, frame = cap.read()
    cv2.imwrite('frame_'+str(i)+'.jpg',frame)
    i+=1

当我们在Windows Media Player或iTunes上播放视频时,它看起来不错。即玩家知道如何定向。

但是skvideo.io不知道,我们保存的那些帧会逆时针旋转90度。

我们如何将信息嵌入到skvideo知道正确方向的视频文件(.mov)文件中?


阅读 439

收藏
2021-01-20

共1个答案

一尘不染

skvideo中有一个小故障,它没有读取可用的元数据。对于移动拍摄的视频,其旋转,但是元数据包含此类参数。skvideo团队已提交修复程序,当前skvideo版本1.1.7会从移动设备读取元数据,这表明应该对视频进行分级。然后skvideo.io.vread旋转文件:

1)使用更新的skvideo版本1.1.7,可以在 https://github.com/scikit-video/scikit-
video上克隆

2)您可以使用以下代码读取视频中的所有帧,最有可能的元数据将被读取

import skvideo.io
videogen = skvideo.io.vread(f.name)

如果以人像模式拍摄,视频将自动旋转。

3)在skvideo回购上创建了一个问题,请看一下以获取更多参考: https : //github.com/scikit-video/scikit-
video/issues/40

2021-01-20