1

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

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

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

为什么会发生这种情况?

谢谢你的回答!对不起我的英语!

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

4

1 回答 1

1

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

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

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

于 2013-03-26T21:12:47.807 回答