cv2.cvtColor() 的使用

本文详细介绍了OpenCV中cvtColor()函数的使用,用于图像色彩空间转换。该函数支持C++和Python API,可用于将图像从一个色彩空间转换到另一个,如BGR到RGB、HSV等。在处理8位图像时可能会有信息损失,建议先转换为32位图像再进行转换。转换后添加的透明通道默认填充最大值。注意色彩通道顺序和取值范围对转换结果的影响。
摘要由CSDN通过智能技术生成

概述
opencv使用cvtColor()函数对图像进行色彩空间的转换。

API说明
C++ API如下表所示:

void cv::cvtColor    (    InputArray    src,    (原始图像,格式:8-bit unsigned / 16-bit unsigned / single-precision floating-point)
OutputArray    dst,    (目标图像:size与depth和原始图像要相等)
int    code,    (色彩空间转换码)(ColorConversionCodes)
int    dstCn=0    (目标图像的通道数,此参数为0时,目标图像的通道数由原始图像自动生成)
)            
python API如下表所示:

dst    =    cv.cvtColor(    src, code[, dst[, dstCn]]    )
功能说明
将输入图像从一个色彩空间转换到另一个色彩空间。
在处理RGB图像时要注意色彩通道的顺序(RGB或BGR)。
opencv中的默认色彩空间实际是BGR,但是常常以RGB提及。
对于一个24位标准彩色图像而言,1个像素对应3个字节(8位),每个字节依次对应B,G和R分量。
R,G,和B分量的取值范围一般如下:

对于CV_8U 图像:0 到 255
对于CV_16U 图像:0 到 65535
对于CV_32F 图像:0 到 1
对于线性变换,该取值范围 不重要。
对于非线性变换,输入的rgb图像应当先归一化到正确的取值范围,从而得到正确的结果。
例如:RGB → L*u*v*,输入图像:8-bit image,目标图像:32-bit floating-point image,在调用 cvtColor()函数之前,应当将输入图像的分量的取值范围从0~255缩到0~1:
img *= 1./255;
cvtColor(img, img, COLOR_BGR2Luv);
如果对8-bit images使用cvtColor()函数,转换会丢失部分信息,一般不明显。推荐先将图像转换成32-bit images,再进行色彩空间转换,最后再把图像转换成8-bit images。

如果转换后添加了透明通道,其值会被设置为对应通道取值范围的最大值(255 for CV_8U, 65535 for CV_16U, 1 for CV_32F)。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值