我有以下代码,我的频道数量为3
IplImage* img_crop_mat = cvLoadImage("....", 1);
...
int b = 0;
uchar* rgb = (uchar*) img_crop_mat->imageData;
我希望循环显示R
,G
和B
矩阵,浏览整个图像:
for (int y = b; y < height - b; y++)
{
???
for (int x = b; x < width - b; x++)
{
????
}
}
之前关于我的问题的论坛涉及CvMat,但没有使用指针作为我的代码。
我必须考虑哪些索引?
答案 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的定义。