学习OpenCV--通道和step

来源:互联网 发布:统计学:从数据到结论 编辑:程序博客网 时间:2024/06/08 04:00

       在多通道的矩阵中,务必记住一点:通道是连续的,例如,在一个3通道2维的表示红、绿、蓝(RGB)矩阵中。矩阵数据如下存储rgbrgbrgb……。所以,要将指向该数据类型的指针移动到下一个通道,我们只需要将其增加1。如果想访问下一个“像素”或者元素集,我们只需要增加一定的偏移量,使其与通道数相等。

       另一个需要知道的技巧是矩阵数组的step元素,step是矩阵中行的长度,单位为字节。在那些结构中,仅靠cols和width是无法在矩阵的不同行之间移动指针的,出于效率的考虑,矩阵将被分配4个字节的整数倍。所以,三个字节宽度的矩阵将被分配4个字节,最后一个字节被忽略。因此,如果我们得到一个字节指针,该字节指向数据元素,那么我们可以用step和这个指针相加以使指针指向正好在我们的点下一行元素。如果我们有一个整型或者浮点型的矩阵,对应的有整型和浮点型的指针指向数据区域,我们将让step/4与指针相加来移到下一行,对双精度型的,我们让step/8与指针相加。

       要想直接访问矩阵,其实只需知道一点,即数据是按光栅扫描顺序存储的,列("x")是变化最快的变量。通道是互相交错的,这意味着,对于一个多通道矩阵来说,它们变化的速度仍然比较快。

原创粉丝点击