opencv之cvtColor()函数

概述

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

API说明

C++ API如下表所示:

void cv::cvtColor(InputArraysrc,(原始图像,格式:8-bit unsigned / 16-bit unsigned / single-precision floating-point)
OutputArraydst,(目标图像:size与depth和原始图像要相等)
intcode,(色彩空间转换码)(ColorConversionCodes
intdstCn=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)。

官网说明

Color conversions

官网样例

camshiftdemo.cpp
ffilldemo.cpp, hog.cpp
houghcircles.cpp
houghlines.cpp
lkdemo.cpp
Sobel_Demo.cpp
train_HOG.cpp
watershed.cpp.

附录一:色彩空间转换代码表

转换代码转换说明
COLOR_BGR2BGRAadd alpha channel to RGB or BGR image
COLOR_RGB2RGBA
COLOR_BGRA2BGRremove alpha channel from RGB or BGR image
COLOR_RGBA2RGB
COLOR_BGR2RGBAconvert between RGB and BGR colorspaces(with or without alpha channel)
COLOR_RGB2BGRA
COLOR_RGBA2BGR
COLOR_BGRA2RGB
COLOR_BGR2RGB
COLOR_RGB2BGR
COLOR_BGRA2RGBA
COLOR_RGBA2BGRA
COLOR_BGR2GRAYconvert between RGB/BGR and grayscale,官网代码样例
COLOR_RGB2GRAY
COLOR_GRAY2BGR
COLOR_GRAY2RGB
COLOR_GRAY2BGRA
COLOR_GRAY2RGBA
COLOR_BGRA2GRAY
COLOR_RGBA2GRAY
COLOR_BGR2BGR565convert between RGB/BGR and BGR565(16-bit images)
COLOR_RGB2BGR565
COLOR_BGR5652BGR
COLOR_BGR5652RGB
COLOR_BGRA2BGR565
COLOR_RGBA2BGR565
COLOR_BGR5652BGRA
COLOR_BGR5652RGBA
COLOR_GRAY2BGR565convert between grayscale and BGR565(16-bit images)
COLOR_BGR5652GRAY
COLOR_BGR2BGR555convert between RGB/BGR and BGR555(16-bit images)
COLOR_RGB2BGR555
COLOR_BGR5552BGR
COLOR_BGR5552RGB
COLOR_BGRA2BGR555
COLOR_RGBA2BGR555
COLOR_BGR5552BGRA
COLOR_BGR5552RGBA
COLOR_GRAY2BGR555convert between grayscale and BGR555(16-bit images)
COLOR_BGR5552GRAY
COLOR_BGR2XYZconvert RGB/BGR to CIEXYZ,官网代码样例
COLOR_RGB2XYZ
COLOR_XYZ2BGR
COLOR_XYZ2RGB
COLOR_BGR2YCrCbconvert RGB/BGR to luma-chroma(akaYCC),官网代码样例
COLOR_RGB2YCrCb
COLOR_YCrCb2BGR
COLOR_YCrCb2RGB
COLOR_BGR2HSVconvert RGB/BGR to HSV(hue saturation value),官网代码样例
COLOR_RGB2HSV
COLOR_BGR2Labconvert RGB/BGR to CIELab,官网代码样例
COLOR_RGB2Lab
COLOR_BGR2Luvconvert RGB/BGR to CIELuv,官网代码样例
COLOR_RGB2Luv
COLOR_BGR2HLSconvert RGB/BGR to HLS(hue lightness saturation),官网代码样例
COLOR_RGB2HLS
COLOR_HSV2BGRbackward conversions to RGB/BGR
COLOR_HSV2RGB
COLOR_Lab2BGR
COLOR_Lab2RGB
COLOR_Luv2BGR
COLOR_Luv2RGB
COLOR_HLS2BGR
COLOR_HLS2RGB
COLOR_BGR2HSV_FULL
COLOR_RGB2HSV_FULL
COLOR_BGR2HLS_FULL
COLOR_RGB2HLS_FULL
COLOR_HSV2BGR_FULL
COLOR_HSV2RGB_FULL
COLOR_HLS2BGR_FULL
COLOR_HLS2RGB_FULL
COLOR_LBGR2Lab
COLOR_LRGB2Lab
COLOR_LBGR2Luv
COLOR_LRGB2Luv
COLOR_Lab2LBGR
COLOR_Lab2LRGB
COLOR_Luv2LBGR
COLOR_Luv2LRGB
COLOR_BGR2YUVconvert between RGB/BGR and YUV
COLOR_RGB2YUV
COLOR_YUV2BGR
COLOR_YUV2RGB
COLOR_YUV2RGB_NV12YUV4:2:0 family to RGB.
COLOR_YUV2BGR_NV12
COLOR_YUV2RGB_NV21
COLOR_YUV2BGR_NV21
COLOR_YUV420sp2RGB
COLOR_YUV420sp2BGR
COLOR_YUV2RGBA_NV12
COLOR_YUV2BGRA_NV12
COLOR_YUV2RGBA_NV21
COLOR_YUV2BGRA_NV21
COLOR_YUV420sp2RGBA
COLOR_YUV420sp2BGRA
COLOR_YUV2RGB_YV12
COLOR_YUV2BGR_YV12
COLOR_YUV2RGB_IYUV
COLOR_YUV2BGR_IYUV
COLOR_YUV2RGB_I420
COLOR_YUV2BGR_I420
COLOR_YUV420p2RGB
COLOR_YUV420p2BGR
COLOR_YUV2RGBA_YV12
COLOR_YUV2BGRA_YV12
COLOR_YUV2RGBA_IYUV
COLOR_YUV2BGRA_IYUV
COLOR_YUV2RGBA_I420
COLOR_YUV2BGRA_I420
COLOR_YUV420p2RGBA
COLOR_YUV420p2BGRA
COLOR_YUV2GRAY_420
COLOR_YUV2GRAY_NV21
COLOR_YUV2GRAY_NV12
COLOR_YUV2GRAY_YV12
COLOR_YUV2GRAY_IYUV
COLOR_YUV2GRAY_I420
COLOR_YUV420sp2GRAY
COLOR_YUV420p2GRAY
COLOR_YUV2RGB_UYVYYUV4:2:2 family to RGB.
COLOR_YUV2BGR_UYVY
COLOR_YUV2RGB_Y422
COLOR_YUV2BGR_Y422
COLOR_YUV2RGB_UYNV
COLOR_YUV2BGR_UYNV
COLOR_YUV2RGBA_UYVY
COLOR_YUV2BGRA_UYVY
COLOR_YUV2RGBA_Y422
COLOR_YUV2BGRA_Y422
COLOR_YUV2RGBA_UYNV
COLOR_YUV2BGRA_UYNV
COLOR_YUV2RGB_YUY2
COLOR_YUV2BGR_YUY2
COLOR_YUV2RGB_YVYU
COLOR_YUV2BGR_YVYU
COLOR_YUV2RGB_YUYV
COLOR_YUV2BGR_YUYV
COLOR_YUV2RGB_YUNV
COLOR_YUV2BGR_YUNV
COLOR_YUV2RGBA_YUY2
COLOR_YUV2BGRA_YUY2
COLOR_YUV2RGBA_YVYU
COLOR_YUV2BGRA_YVYU
COLOR_YUV2RGBA_YUYV
COLOR_YUV2BGRA_YUYV
COLOR_YUV2RGBA_YUNV
COLOR_YUV2BGRA_YUNV
COLOR_YUV2GRAY_UYVY
COLOR_YUV2GRAY_YUY2
COLOR_YUV2GRAY_Y422
COLOR_YUV2GRAY_UYNV
COLOR_YUV2GRAY_YVYU
COLOR_YUV2GRAY_YUYV
COLOR_YUV2GRAY_YUNV
COLOR_RGBA2mRGBAalpha premultiplication
COLOR_mRGBA2RGBA
COLOR_RGB2YUV_I420RGB to YUV4:2:0 family.
COLOR_BGR2YUV_I420
COLOR_RGB2YUV_IYUV
COLOR_BGR2YUV_IYUV
COLOR_RGBA2YUV_I420
COLOR_BGRA2YUV_I420
COLOR_RGBA2YUV_IYUV
COLOR_BGRA2YUV_IYUV
COLOR_RGB2YUV_YV12
COLOR_BGR2YUV_YV12
COLOR_RGBA2YUV_YV12
COLOR_BGRA2YUV_YV12
COLOR_BayerBG2BGRDemosaicing.
COLOR_BayerGB2BGR
COLOR_BayerRG2BGR
COLOR_BayerGR2BGR
COLOR_BayerBG2RGB
COLOR_BayerGB2RGB
COLOR_BayerRG2RGB
COLOR_BayerGR2RGB
COLOR_BayerBG2GRAY
COLOR_BayerGB2GRAY
COLOR_BayerRG2GRAY
COLOR_BayerGR2GRAY
COLOR_BayerBG2BGR_VNGDemosaicing using Variable Numberof Gradients.
COLOR_BayerGB2BGR_VNG
COLOR_BayerRG2BGR_VNG
COLOR_BayerGR2BGR_VNG
COLOR_BayerBG2RGB_VNG
COLOR_BayerGB2RGB_VNG
COLOR_BayerRG2RGB_VNG
COLOR_BayerGR2RGB_VNG
COLOR_BayerBG2BGR_EAEdge-Aware Demosaicing.
COLOR_BayerGB2BGR_EA
COLOR_BayerRG2BGR_EA
COLOR_BayerGR2BGR_EA
COLOR_BayerBG2RGB_EA
COLOR_BayerGB2RGB_EA
COLOR_BayerRG2RGB_EA
COLOR_BayerGR2RGB_EA
COLOR_BayerBG2BGRADemosaicing with alpha channel.
COLOR_BayerGB2BGRA
COLOR_BayerRG2BGRA
COLOR_BayerGR2BGRA
COLOR_BayerBG2RGBA
COLOR_BayerGB2RGBA
COLOR_BayerRG2RGBA
COLOR_BayerGR2RGBA
COLOR_COLORCVT_MAX
  • 14
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值