【问题标题】:Difference of pixel value in Image between Matlab and OpencvMatlab和Opencv之间图像中像素值的差异
【发布时间】:2013-03-27 07:47:31
【问题描述】:

我从 avi 视频中获取帧,并通过 Matlab 打开彩色图像并检查三个通道 R、G、B 的像素值。 (案例一)

之后,我使用opencv2.4.3获取帧并通过txt文件保存像素值。然后,我检查txt文件,我意识到像素值与Matlab不同(我知道opencv打开的彩色图像是BGR,并且像素的索引位置必须是负1(在Matlab中,像素位置(x,y)。在c ,像素位置(x-1,y-1)))。 (案例2)

最后,我使用opencv通过cvSaveImage函数保存帧,然后我用Matlab打开这个帧。在这种情况下,像素值也与上述两种情况不同。

为什么会这样?

感谢您的回答!对不起我的英语!

这是我的代码 http://www.scribd.com/doc/129263549/Code(必须下载才能阅读)

【问题讨论】:

  • 我猜你尝试了 jpeg 格式,默认情况下是有损的。尝试无损格式;应该是一样的。
  • 第三种情况并不重要。但在第一种情况和第二种情况下,我从 avi 图像中获取帧并直接处理数据。在 opencv 中,我使用 cvCaptureFromAVI 和 cvQueryFrame 来获取帧检查值 在 Matlab 中,我使用 VideoReader 和读取来获取帧,然后使用 imshow 来检查值。而且两个值不同!
  • 请在问题中包含您代码的相关部分,而不是链接到某些需要注册的下载站点。

标签: matlab opencv


【解决方案1】:

Matlab 和 OpenCV 存储像素值的方式不同。 Matlab 使用 压缩 来保存 .jpeg 图像,然后再存储它们。因此,如果您在 Matlab 和 OpenCV 中查看相似图像的像素数据,它看起来会有所不同。

如果你在 Matlab 和 OpenCV 中加载和保存相同的源图像,前者会比后者尺寸小;即使您没有对图像进行任何操作。

您无法使两个图像数据看起来相同。幸运的是,对图像进行的任何操作都不受这种内部结构差异的影响。例如,如果您尝试在 Matlab 和 OpenCV 中查找某些像素的索引,两者都会给出正确的值,尽管值看起来不一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2013-07-16
    • 2020-01-13
    • 2016-09-21
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多