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