请教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 );
结果一编译就内存溢出,我查了半天没找到原因,请教了,谢谢
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的逆转换,那就无法得到原始图像了,你感觉呢?
我现在理解的是,cvCvtColor的两个图片指针所指图像中的数据格式应该一样。
但是要是这样的话,我觉得,RGB->Lab的转换就是有损失的了,因为公式是非线性的,然后如果再进行Lab->RGB的逆转换,那就无法得到原始图像了,你感觉呢?
作者: dongyuxieshen 发布时间: 2011-06-16