CvtColor

色彩空间转换

void cvCvtColor( const CvArr* src, CvArr* dst, int code );

src输入的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像.dst输出的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像.code色彩空间转换,通过定义 CV_2 常数 (见下面).

函数 cvCvtColor 将输入图像从一个色彩空间转换为另外一个色彩空间。函数忽略 IplImage 头中定义的 colorModel

和 channelSeq 域,所以输入图像的色彩空间应该正确指定 (包括通道的顺序,对RGB空间而言,BGR 意味着布局为 B0 G0 R0

B1 G1 R1 ... 层叠的 24-位格式,而 RGB 意味着布局为 R0 G0 B0 R1 G1 B1 ... 层叠的24-位格式.

函数做如下变换:

RGB 空间内部的变换,如增加/删除 alpha 通道,反相通道顺序,到16位 RGB彩色或者15位RGB彩色的正逆转换(Rx5:Gx6:Rx5),以及到灰度图像的正逆转换,使用:

RGB[A]->Gray: Y=0.212671*R + 0.715160*G + 0.072169*B + 0*A

Gray->RGB[A]: R=Y G=Y B=Y A=0

所有可能的图像色彩空间的相互变换公式列举如下:

RGB<=>XYZ (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB):

|X| |0.412411 0.357585 0.180454| |R|

|Y| = |0.212649 0.715169 0.072182|*|G|

|Z| |0.019332 0.119195 0.950390| |B|

|R| | 3.240479 -1.53715 -0.498535| |X|

|G| = |-0.969256 1.875991 0.041556|*|Y|

|B| | 0.055648 -0.204043 1.057311| |Z|

RGB<=>YCrCb (CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB)

Y=0.299*R + 0.587*G + 0.114*B

Cr=(R-Y)*0.713 + 128

Cb=(B-Y)*0.564 + 128

R=Y + 1.403*(Cr - 128)

G=Y - 0.344*(Cr - 128) - 0.714*(Cb - 128)

B=Y + 1.773*(Cb - 128)

RGB=>HSV (CV_BGR2HSV,CV_RGB2HSV)

V=max(R,G,B)

S=(V-min(R,G,B))*255/V if V!=0, 0 otherwise

(G - B)*60/S, if V=R

H= 180+(B - R)*60/S, if V=G

240+(R - G)*60/S, if V=B

if H<0 then H=H+360

使用上面从 0° 到 360° 变化的公式计算色调(hue)值,确保它们被 2 除后能适用于8位。

RGB=>Lab (CV_BGR2Lab, CV_RGB2Lab)

|X| |0.433910 0.376220 0.189860| |R/255|

|Y| = |0.212649 0.715169 0.072182|*|G/255|

|Z| |0.017756 0.109478 0.872915| |B/255|

L = 116*Y1/3 for Y>0.008856

L = 903.3*Y for Y<=0.008856

a = 500*(f(X)-f(Y))

b = 200*(f(Y)-f(Z))

where f(t)=t1/3 for t>0.008856

f(t)=7.787*t+16/116 for t<=0.008856

上面的公式可以参考http://www.cica.indiana.edu/cica/faq/color_spaces/color.spaces.html

Bayer=>RGB (CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR,

CV_BayerBG2RGB, CV_BayerRG2BGR, CV_BayerGB2RGB, CV_BayerGR2BGR,

CV_BayerRG2RGB, CV_BayerBG2BGR, CV_BayerGR2RGB, CV_BayerGB2BGR)

Bayer 模式被广泛应用于 CCD 和 CMOS 摄像头. 它允许从一个单独平面中得到彩色图像,该平面中的 R/G/B 象素点被安排如下:

RGRGR

GBGBG

RGRGR

GBGBG

RGRGR

GBGBG

对像素输出的RGB份量由该像素的1、2或者4邻域中具有相同颜色的点插值得到。以上的模式可以通过向左或者向上平移一个像素点来作一些修改。转换

常量CV_BayerC1C22{RGB|RGB}中的两个字母C1和C2表示特定的模式类型:颜色份量分别来自于第二行,第二和第三列。比如说,上述的

模式具有很流行的"BG"类型。

【附:opencv库中附带源码】

/* Constants for color conversion */

#define  CV_BGR2BGRA    0

#define  CV_RGB2RGBA    CV_BGR2BGRA

#define  CV_BGRA2BGR    1

#define  CV_RGBA2RGB    CV_BGRA2BGR

#define  CV_BGR2RGBA    2

#define  CV_RGB2BGRA    CV_BGR2RGBA

#define  CV_RGBA2BGR    3

#define  CV_BGRA2RGB    CV_RGBA2BGR

#define  CV_BGR2RGB     4

#define  CV_RGB2BGR     CV_BGR2RGB

#define  CV_BGRA2RGBA   5

#define  CV_RGBA2BGRA   CV_BGRA2RGBA

#define  CV_BGR2GRAY    6

#define  CV_RGB2GRAY    7

#define  CV_GRAY2BGR    8

#define  CV_GRAY2RGB    CV_GRAY2BGR

#define  CV_GRAY2BGRA   9

#define  CV_GRAY2RGBA   CV_GRAY2BGRA

#define  CV_BGRA2GRAY   10

#define  CV_RGBA2GRAY   11

#define  CV_BGR2BGR565  12

#define  CV_RGB2BGR565  13

#define  CV_BGR5652BGR  14

#define  CV_BGR5652RGB  15

#define  CV_BGRA2BGR565 16

#define  CV_RGBA2BGR565 17

#define  CV_BGR5652BGRA 18

#define  CV_BGR5652RGBA 19

#define  CV_GRAY2BGR565 20

#define  CV_BGR5652GRAY 21

#define  CV_BGR2BGR555  22

#define  CV_RGB2BGR555  23

#define  CV_BGR5552BGR  24

#define  CV_BGR5552RGB  25

#define  CV_BGRA2BGR555 26

#define  CV_RGBA2BGR555 27

#define  CV_BGR5552BGRA 28

#define  CV_BGR5552RGBA 29

#define  CV_GRAY2BGR555 30

#define  CV_BGR5552GRAY 31

#define  CV_BGR2XYZ     32

#define  CV_RGB2XYZ     33

#define  CV_XYZ2BGR     34

#define  CV_XYZ2RGB     35

#define  CV_BGR2YCrCb   36

#define  CV_RGB2YCrCb   37

#define  CV_YCrCb2BGR   38

#define  CV_YCrCb2RGB   39

#define  CV_BGR2HSV     40

#define  CV_RGB2HSV     41

#define  CV_BGR2Lab     44

#define  CV_RGB2Lab     45

#define  CV_BayerBG2BGR 46

#define  CV_BayerGB2BGR 47

#define  CV_BayerRG2BGR 48

#define  CV_BayerGR2BGR 49

#define  CV_BayerBG2RGB CV_BayerRG2BGR

#define  CV_BayerGB2RGB CV_BayerGR2BGR

#define  CV_BayerRG2RGB CV_BayerBG2BGR

#define  CV_BayerGR2RGB CV_BayerGB2BGR

#define  CV_BGR2Luv     50

#define  CV_RGB2Luv     51

#define  CV_BGR2HLS     52

#define  CV_RGB2HLS     53

#define  CV_HSV2BGR     54

#define  CV_HSV2RGB     55

#define  CV_Lab2BGR     56

#define  CV_Lab2RGB     57

#define  CV_Luv2BGR     58

#define  CV_Luv2RGB     59

#define  CV_HLS2BGR     60

#define  CV_HLS2RGB     61

#define  CV_COLORCVT_MAX  100

cvcvtcolor_cvCvtColor实现色彩空间转换相关推荐

  1. python 颜色空间转换_python实现色彩空间转换

    目录: (一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数 (二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色 正文: (一)调用转换函数实现图 ...

  2. OpenCv 009---色彩空间与色彩空间转换

    1 前备知识 各颜色对应的范围 2 所用到的主要OpenCv API /** @brief Converts an image from one color space to another. @pa ...

  3. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  4. Python+OpenCV:基于色彩空间转换的目标跟踪

    Python+OpenCV:基于色彩空间转换的目标跟踪 ######################################################################## ...

  5. Python+OpenCV:色彩空间转换

    Python+OpenCV:色彩空间转换 ############################################################################### ...

  6. 图片的色彩空间转换、简单色彩跟踪与通道分离、合并(三)

    一 图片的色彩空间转换 灰度色彩空间 单通道,取值范围[0,255] 0黑255白 RGB色彩空间(opencv中习惯用BGR) opencv中R,G,B三通道取值范围均为[0,255]. HSV/H ...

  7. OpenCV快速入门五:色彩空间转换

    一:相关api 1:imread imread(filename, cv.IMREAD_GRAYSCALE) 具体cv.imread及其使用方法和读取有中文路径的图片参考博客OpenCV学习一:图片读 ...

  8. openCV色彩空间转换

    RGB 人眼的色彩空间 BGR opencv默认使用的色彩空间 他们的最大差别是R,B排列顺序不一样,若是把RGB直接放入opencv系统中会造成颜色有差异. 给opencv的数据是要BGR的,电脑内 ...

  9. 计算机视觉基础-图像色彩空间转换

    Task03 Opencv框架实现色彩空间转换 一.前言 二.几种常用彩色模型 2.1彩色空间概念 2.2RGB 2.3CMYK 2.4YUV 2.5YCbCr 2.6HSV 2.7HSI 2.8La ...

最新文章

  1. 2018年全国多校算法寒假训练营练习比赛(第三场)
  2. springboot jar服务器运行后无法请求_Spring boot、微服务、OAuth、OpenID的爱恨情仇!...
  3. python预测模型_Python多元线性回归-sklearn.linear_model,并对其预测结果评估
  4. 余弦相似度/卷积核之间的成对余弦相似性
  5. cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
  6. Elasticsearch】es 模糊查询导致Elasticsearch服务宕机
  7. winxp下安装虚拟机,并安装linux操作系统
  8. 进击的UI---------------- UITextFieldUIButton
  9. java环境安装菜鸟教程_Linux菜鸟教程(一:JDK安装和java环境配置)
  10. java batik svg_java使用batik转换svg文件
  11. tongweb设置gzip
  12. PIC单片机-Mplab的使用与实践
  13. 世界杯的科学---足球的基本原理
  14. 京东笔试编程题之方块消除
  15. mysql 简述pk uk fk 的区别和对数据库性能的影响_SQL Server 数据库中PK,UK, DF, CK, FK是什么意思?...
  16. 【云栖大会】云栖大会盛大召开 已成全球一流科技盛会
  17. python,day7,并发编程
  18. 递归方法实现字符串逆序
  19. 【Linux】Docker入门
  20. amd服务器和intel服务器性能,重量级对抗!服务器CPU之Intel VS AMD

热门文章

  1. VMware虚拟机三种网络模式详解(一)Bridged(桥接模式)
  2. .Net 基于Memcache集群的分布式Session
  3. 多速柔性制造与多AGV运输集成低碳调度优化
  4. 远程桌面快捷键的使用
  5. 计算机毕设选题推荐之智慧考试系统 在线批卷阅卷系统 随机组卷系统 考试题库系统 springboot考试系统 作业管理系统 在线作业批改系统(源代码+文档+调试+讲解)
  6. 应届毕业生个人简历表-Word简历可编辑下载
  7. 基于V2X多智能车辆协同控制仿真分析入门-基础知识-矩阵
  8. Unity3D_打碎模型(自定义碎的程度)插件--Fracturing Destruction 1.11
  9. PotPlayer:不支持S/W HEVC(H265)解码 的解决办法
  10. 图像梯度(opencv-c++)