您的位置:首页 > 运维架构

【转】opencv中widthStep不一定等于width*nChannels的原因

2015-07-13 13:50 537 查看
【转】opencv中widthStep不一定等于width*nChannels的原因

opencv里图片属性widthStep属性有点奇怪,它稍大于width * nChannels。如3*3 的3通道bmp图片,所有像素RGB分量都为97,输出如下:

图像详细参数

nSize: 112

imageSize: 36

nChannels: 3

height: 3

width: 3

widthstep: 12

979797979797979797000

979797979797979797000

979797979797979797000

可见,其在每一行后都补零。以使widthstep为4的倍数。为什么会这样呢?

先看下面的例子。

class A

{

char a;

};

class B

{

char a;

int b;

};

int main()

{

std::cout << "Size of A: " << sizeof(A) << std::endl;

std::cout << "Size of B: " << sizeof(B) << std::endl;

std::cin.get();

return 0 ;

}

输出1 8;

从这个例子可以看出,类中的成员的内存会自动补齐,补齐的方式为都补为4的倍数。我估计在opencv中也是同样的原因。(内存对齐)

转自http://blog.csdn.net/zhirom/article/details/7487159
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: