2012-11-24 40 views
0

我刚刚学习OpenCV。我正在阅读的书中建议,对于需要触摸每个像素的操作,我使用double for循环和指针算术,stepWidth等从一个到另一个。OpenCV视觉理解指针算术

我很难直观地看到IplImage在内存中看起来像什么,是RGBRGB还是RRRGGGBBB,这些都是数字,如果有8位图像,他们会将它们打包成更大的32位......等等等

有谁知道的视觉或可以解释OpenCV图像分配的底层方式和哪些数据类型去哪里?我意识到它依赖于是否像素或刨等,但它会很酷,看到几个例子说明与字节计数,以便能够更好地了解如何迭代通过

谢谢!

+1

你为什么不只是打印出内存的十六进制转储,并亲眼看看它是如何布局? –

+0

的确,你会发现OpenCV的默认像素封装实际上是BGR。 – karlphillip

+0

这是一个非常好的主意。我将如何打印出图像的十六进制转储?那也会显示000的未使用内存部分? – lollercoaster

回答

1

内部格式为3x8bytes,BGR顺序为每个像素一个。

ROW0:BGR(column0)BGR(列1).......

如果图像* 3字节的宽度不是4的倍数的图像的下一行开始的接下来的4字节边界。这是因为内存访问速度更快,通常是在32位的边界上最现代化的机器

Fastest way to extract individual pixel data?