我们将视频保存在移动客户端上,然后将其发送到服务器。在服务器上,我使用以下代码保存框架:
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)文件中?
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