请教cvCvtColor的一个用法

我想把一个8位3通道的RGB彩色图像转换到Lab颜色空间,代码如下:

IplImage * imgRGBImage = cvLoadImage( "D://1.jpg" ); //8位三通道的图像
IplImage * imgLabImage = cvCreateImage( cvGetSize( imgRGBImage ) , IPL_DEPTH_32F , 3 ); //个人理解Lab是3通道,32F点型的图像
cvCvtColor( imgRGBImage , imgLabImage , CV_BGR2Lab );

结果一编译就内存溢出,我查了半天没找到原因,请教了,谢谢

作者: dongyuxieshen   发布时间: 2011-06-16

改成 IplImage * imgLabImage = cvCreateImage( cvGetSize( imgRGBImage ) , 8 , 3 );
试试

作者: wqhua   发布时间: 2011-06-16

谢谢,你说的对。

我现在理解的是,cvCvtColor的两个图片指针所指图像中的数据格式应该一样。

但是要是这样的话,我觉得,RGB->Lab的转换就是有损失的了,因为公式是非线性的,然后如果再进行Lab->RGB的逆转换,那就无法得到原始图像了,你感觉呢?

作者: dongyuxieshen   发布时间: 2011-06-16