[OpenCV] 图像在缓冲区中的存储

以彩色图像威力,图像数据缓冲区的前三个字节对应图像左上角像素的三个通道值,接下来的三个字节对应第一行的第二个元素,以此类推。(OpenCV默认使用BGR的通道顺序,因此第一个通道通常是蓝色).一个宽为W、高为H的图像需要一个大小有WH3个uchar构成的内存块。但是,处于效率的考虑,每行会填补一些额外像素。这是因为,如果行的长度是4或8的倍数,一些多媒体处理芯片(如Intel的MMX架构)可以更高效地处理图像。这些额外的像素不会被显示或者保存,那么图像的有效宽度就等于图像的真实宽度。成员变量cols代表图像的宽度,rows代表图像的高度,step代表以字节为代为的图像的有效宽度。即使你的图像的元素类型不是uchar,step仍然代表着行的字节数。像素的大小可以由elemSize函数得到:对于一个三通道short型矩阵,elemSize返回6.

source:计算机视觉编程手册(OpenCV2)

posted @ 2018-08-06 14:07  zengzhaocheng  阅读(482)  评论(0编辑  收藏  举报