如何打印R,G和B矩阵

时间:2013-03-04 16:36:38

标签: c++ visual-studio-2010 qt opencv

我有以下代码,我的频道数量为3

IplImage* img_crop_mat = cvLoadImage("....", 1);
...
int b = 0;
uchar* rgb = (uchar*) img_crop_mat->imageData;

我希望循环显示RGB矩阵,浏览整个图像:

for (int y = b; y < height - b; y++)
{    
    ???
    for (int x = b; x < width - b; x++)
    {
        ????
    }
}

之前关于我的问题的论坛涉及CvMat,但没有使用指针作为我的代码。

我必须考虑哪些索引?

1 个答案:

答案 0 :(得分:1)

您可以使用以下宏来访问3通道8U图像的任意像素:

CV_IMAGE_ELEM(myImage, unsigned char, y, x*3 + ChannelOfInterest)

这是一个左值,因此您可以获取并使用其值,或者您可以更改像素的值。

默认情况下,

ChannelOfInterest = 0, blue
ChannelOfInterest = 1, green
ChannelOfInterest = 2, red

实际的数据结构非常简单,查找CV_IMAGE_ELEM的定义。