首页 > 解决方案 > 从 iPhone 相机拍摄的视频似乎被 OpenCV 旋转了 90 度?我该如何解决这个问题?

问题描述

我从 iPhone 拍摄视频并将每一帧从彩色转换为灰度,但是,在 OpenCV(4.1,C++)中,视频似乎旋转了 90 度

同样的问题没有出现在 MATLAB 或 VLC 播放器上(当我检查时)

示例代码

   // frame
    Mat current_frame;
VideoCapture capture("file_name.mov");

// Check - video file does not open for reading
if (!capture.isOpened())
    throw "Error when reading steam_avi";
capture >> current_frame;

标签: c++opencvvideocomputer-visionopencv4

解决方案


拉希特,

手机摄像头可以以四种可能的方向录制视频:横向 - 左侧摄像头 横向 - 右侧摄像头 纵向 - 顶部摄像头 纵向 - 底部摄像头。

在每一种情况下,都会将旋转标志编码到视频中,并由解码器来尊重该标志并在读取时执行适当的旋转。我相信这样做是为了提高编码性能。

MATLAB 在 Windows 10 上绝对尊重这一点。

另一方面,Windows 7 不支持此标志,您将看到旋转的视频。由于 MATLAB 似乎使用 Windows 框架进行读取,因此它也将在 MATLAB 中旋转。

希望这可以帮助。

迪内什


推荐阅读