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

标签 python opencv

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

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 上播放视频时,它看起来不错。 IE。玩家知道如何定位它。

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

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

最佳答案

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

关于python - opencv - 视频看起来不错,但帧旋转了 90 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380432/

相关文章:

c - 应用程序无法正确初始化(0xc0150002)

python - Tensorflow 模型输入形状错误 : Input 0 of layer sequential_11 incompatible with layer: rank undefined, 但层需要定义等级

c++ - OpenCV 中的转换概念

c++ - 如何获取视频采集设备信息?

Python将字符串转换为字节

c++ - 在 openCV 中快速将图像保存到磁盘

c++ - 并行化高斯模糊链

python - 如何将此 Python 代码转换为 C++

python - 如何修复列表索引超出范围?

python - 在 Selenium Firefox 中将默认设置设置为 'no proxy'