cvcvtcolor_cvCvtColor实现色彩空间转换
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实现色彩空间转换相关推荐
- python 颜色空间转换_python实现色彩空间转换
目录: (一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数 (二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色 正文: (一)调用转换函数实现图 ...
- OpenCv 009---色彩空间与色彩空间转换
1 前备知识 各颜色对应的范围 2 所用到的主要OpenCv API /** @brief Converts an image from one color space to another. @pa ...
- python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...
一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...
- Python+OpenCV:基于色彩空间转换的目标跟踪
Python+OpenCV:基于色彩空间转换的目标跟踪 ######################################################################## ...
- Python+OpenCV:色彩空间转换
Python+OpenCV:色彩空间转换 ############################################################################### ...
- 图片的色彩空间转换、简单色彩跟踪与通道分离、合并(三)
一 图片的色彩空间转换 灰度色彩空间 单通道,取值范围[0,255] 0黑255白 RGB色彩空间(opencv中习惯用BGR) opencv中R,G,B三通道取值范围均为[0,255]. HSV/H ...
- OpenCV快速入门五:色彩空间转换
一:相关api 1:imread imread(filename, cv.IMREAD_GRAYSCALE) 具体cv.imread及其使用方法和读取有中文路径的图片参考博客OpenCV学习一:图片读 ...
- openCV色彩空间转换
RGB 人眼的色彩空间 BGR opencv默认使用的色彩空间 他们的最大差别是R,B排列顺序不一样,若是把RGB直接放入opencv系统中会造成颜色有差异. 给opencv的数据是要BGR的,电脑内 ...
- 计算机视觉基础-图像色彩空间转换
Task03 Opencv框架实现色彩空间转换 一.前言 二.几种常用彩色模型 2.1彩色空间概念 2.2RGB 2.3CMYK 2.4YUV 2.5YCbCr 2.6HSV 2.7HSI 2.8La ...
最新文章
- 2018年全国多校算法寒假训练营练习比赛(第三场)
- springboot jar服务器运行后无法请求_Spring boot、微服务、OAuth、OpenID的爱恨情仇!...
- python预测模型_Python多元线性回归-sklearn.linear_model,并对其预测结果评估
- 余弦相似度/卷积核之间的成对余弦相似性
- cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
- Elasticsearch】es 模糊查询导致Elasticsearch服务宕机
- winxp下安装虚拟机,并安装linux操作系统
- 进击的UI---------------- UITextFieldUIButton
- java环境安装菜鸟教程_Linux菜鸟教程(一:JDK安装和java环境配置)
- java batik svg_java使用batik转换svg文件
- tongweb设置gzip
- PIC单片机-Mplab的使用与实践
- 世界杯的科学---足球的基本原理
- 京东笔试编程题之方块消除
- mysql 简述pk uk fk 的区别和对数据库性能的影响_SQL Server 数据库中PK,UK, DF, CK, FK是什么意思?...
- 【云栖大会】云栖大会盛大召开 已成全球一流科技盛会
- python,day7,并发编程
- 递归方法实现字符串逆序
- 【Linux】Docker入门
- amd服务器和intel服务器性能,重量级对抗!服务器CPU之Intel VS AMD
热门文章
- VMware虚拟机三种网络模式详解(一)Bridged(桥接模式)
- .Net 基于Memcache集群的分布式Session
- 多速柔性制造与多AGV运输集成低碳调度优化
- 远程桌面快捷键的使用
- 计算机毕设选题推荐之智慧考试系统 在线批卷阅卷系统 随机组卷系统 考试题库系统 springboot考试系统 作业管理系统 在线作业批改系统(源代码+文档+调试+讲解)
- 应届毕业生个人简历表-Word简历可编辑下载
- 基于V2X多智能车辆协同控制仿真分析入门-基础知识-矩阵
- Unity3D_打碎模型(自定义碎的程度)插件--Fracturing Destruction 1.11
- PotPlayer:不支持S/W HEVC(H265)解码 的解决办法
- 图像梯度(opencv-c++)