c++ - 从 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;
解决方案
拉希特,
手机摄像头可以以四种可能的方向录制视频:横向 - 左侧摄像头 横向 - 右侧摄像头 纵向 - 顶部摄像头 纵向 - 底部摄像头。
在每一种情况下,都会将旋转标志编码到视频中,并由解码器来尊重该标志并在读取时执行适当的旋转。我相信这样做是为了提高编码性能。
MATLAB 在 Windows 10 上绝对尊重这一点。
另一方面,Windows 7 不支持此标志,您将看到旋转的视频。由于 MATLAB 似乎使用 Windows 框架进行读取,因此它也将在 MATLAB 中旋转。
希望这可以帮助。
迪内什
推荐阅读
- flowtype - 在流中键入一个对象,其中 $Keys 字符串文字作为键但具有不同的值
- regex - 用于匹配分支詹金斯声明性管道的正则表达式
- java - 这段 scala 代码中有什么错误?
- windows - 在 Win 10 中,从“开始菜单”打开命令提示符 - 特定文件夹中的快捷方式
- php - AWS SDK Lex PostText 错误:无法将截断BigNumber 转换为字符串
- jenkins - 如何在 Jenkins 管道中发布 nunit3 测试结果?
- c++ - 从文本文件 dlib c++ 中读取人脸向量
- python - python pandas时间序列计数先前匹配的数量
- html - VBA:getHTML 作为自定义函数 - 避免多次 HTML 检索
- azure - Azure 数据工厂 V2 ML Batch 执行 Web 服务中 GlobalParameters 中的动态内容