matlab与opencv读取同一帧视频时会得到不同的像素值
Posted 雾恋过往
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab与opencv读取同一帧视频时会得到不同的像素值相关的知识,希望对你有一定的参考价值。
我正在尝试将 matlab 脚本转换为 python。 matlab 脚本读取 .avi 视频文件,并且对于视频中的每个帧,它得到三通道(红色,绿色和蓝色)的像素值,以便我做后续处理。
但是奇怪的事发生了,matlab 和 python的 rgb 像素值不一样,我也知道 matlab 是 RGB 方式存储,python 的 opencv 是 BGR 存储,但是匹配后仍不一样,到目前为止,我似乎只发现 opencv 的 cv2 是按 BGR 存储,其他的都是按 RGB 方式存储。
现象
通过比较两者读同一帧视频的结果来看,很少有一致的,基本存在三种情形:
- 同一像素点通道值差2
- 同一像素点通道值差1
- 同一像素点通道值一致
且并不是说 R通道差2,我的G、B也差2,三个通道相差的值无一致性。
解决办法
现在还未解决。
我认为的可能原因
可能是解码方式不同造成的
opencv 采用 ffmpeg 解码后的值,matlab采用自己的解码方式,因为视频帧与帧存在参考关系,视频压缩、编码的原理也基本是基于此参考关系。所以可能是解码方式的不同造成了这一个问题。
暂时不知道如何解决这个问题
以上是关于matlab与opencv读取同一帧视频时会得到不同的像素值的主要内容,如果未能解决你的问题,请参考以下文章