当前位置: 首页 > 面试题库 >

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

楚嘉玉
2023-03-14
问题内容

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

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



 类似资料:
  • 在OpenCV上使用class VideoCapture时如何旋转摄像头?(Android上的人脸检测示例)。我正在旋转画布: 但摄像机的图像并没有旋转:人脸检测不起作用。 摄像头从以下位置接收流: 我做了以下更新: 但这是行不通的。当我以portret方向运行程序时(在android设备上)——当我以横向方向运行程序时,程序不会启动——程序工作,但当我旋转设备时,程序工作,但显示屏上的图像不会旋

  • 可以使用类的方法对图像执行旋转操作。以下是这种方法的语法 - 该方法接受以下参数 - src - 表示此操作的源(输入图像)的对象。 dst - 表示此操作的目标(输出图像)的对象。 rotationMatrix - 表示旋转矩阵的对象。 size - 表示输出图像大小的整数类型变量。 示例 以下程序演示如何旋转图像。 假定以下是上述程序中指定的输入图像:。 执行上面示例代码,得到以下结果 -

  • 问题内容: 我必须使用JDBC写入数据库(不选择休眠/ ibatis),而我的数据库是Oracle 11g。 我创建以下查询: 但是我的。生成无效的符号异常。但是当我在松鼠中执行查询时,它就被提交了。有人知道为什么会这样吗? 问题答案: 正如我在上面的评论中所述,问题可能是由于SQL语句末尾的多余分号引起的。看这篇文章 您可能还需要查看PreparedStatments,以使您的生活更轻松。这是上

  • 我正在使用一个循环来访问使用Python和OpenCV的视频文件的所有帧。在访问每个帧时,我将该帧的索引添加到一个列表中。 但是,我比较了列表的大小和使用

  • 这是我当前的代码: 我一辈子都不知道如何旋转这个。我看了其他几个论坛,但没有其他机构讨论这个问题。 据我所知,没有办法旋转JPanel或JFrame,所以我运气不好吗? 这就是它现在的样子: 数字时钟 我想把它旋转90度。基本上是垂直的。 编辑:解决方案: