我将 OpenCV 用于我的一些图像处理相关代码。我被困在一个特定的点上。
在特定代码中,我需要根据图像的 CIE L*a*b* 值比较图像的像素值。我知道对于 BGR,我们可以做这样的事情:
// img is the image, suppose
uchar *data = ( uchar* )img->imageData;
for(i=0; i< img->height; i++)
for(j=0; j<img->width; j++)
{
b = data[i*img->widthStep + j*img->nChannels + 0];
g = data[i*img->widthStep + j*img->nChannels + 1];
r = data[i*img->widthStep + j*img->nChannels + 2];
}
我的问题是,我们可以为 l*a*b* 颜色模型做类似的事情吗?我的意思是起初我将图像转换为
cvCvtColor(img, lab, CV_BGR2Lab);
然后像上述情况一样访问单个通道信息(因为 L*a*b* 也由 3 个通道组成,如果没有错的话),我们可以获得像素值吗?
我问这个的原因是我试图实现它,但是我得到了一些真正奇怪的值,比如非常高的负数(我使用 int 数据类型而不是 uchar,因为我不确定范围 'a' 和 'b' 可以有),而在维基百科中,我看到“L”的值只能在 0 到 100 的范围内。那么我怎样才能得到这些像素值呢?
提前致谢 !!