资源简介
图像中rgb值和cmyk值转换,用于颜色空间变换。
代码片段和文件信息
//ColorType.cpp
#include “ColorType.h“
//类ColorType函数的详细定义
//构造函数:
ColorType::ColorType()
{ RGB.R=(BYTE)255;
RGB.G=(BYTE)255;
RGB.B=(BYTE)255;
}
//从32值(DOWRD)提取RGB三种颜色值:
void ColorType::Value32ToRGB(DWORD value32)
{
RGB.R=(BYTE)((value32 & 0x00FF0000)>>0);
RGB.G=(BYTE)((value32 & 0x0000FF00)>>8);
RGB.B=(BYTE)((value32 & 0x000000FF)>>16);
}
//RGB颜色模式转换成CMYK颜色模式:
void ColorType::RGBtoCMYK( )
{
CMYK.C=255-RGB.R;
CMYK.M=255-RGB.G;
CMYK.Y=255-RGB.B;
CMYK.K=((CMYK.C CMYK.C-=CMYK.K;
CMYK.M-=CMYK.K;
CMYK.Y-=CMYK.K;
}
//RGB颜色模式转换成HST颜色模式:
void ColorType::RGBtoHSI()
{
double v1=0.7071*((double)RGB.G-(double)RGB.B);
double v2=0.816496*(double)RGB.R-0.408248*((double)RGB.G+(double)RGB.B);
HSI.H=atan(v2/v1);
HSI.S=sqrt(v1*v1+v2*v2);
HSI.I=0.57735*((double)RGB.R+(double)RGB.G+(double)RGB.B);
}
//RGB颜色模式转换成YCbCr颜色模式:
void ColorType:: RGBtoYCbCr( )
{
YCbCr.Y = 0.299*(double)RGB.R+0.587*(double)RGB.G+0.1140*(double)RGB.B;
YCbCr.Cr= 0.500*(double)RGB.R-0.4187*(double)RGB.G-0.0183*(double)RGB.B+128;
YCbCr.Cb=-0.1687*(double)RGB.R-0.3313*(double)RGB.G+0.500*(double)RGB.B+128;
}
//RGB颜色模式转换成YUV颜色模式:
void ColorType::RGBtoYUV( )
{
YUV.Y= 0.299*(double)RGB.R+0.587*(double)RGB.G+0.144*(double)RGB.B;
YUV.U=-0.147*(double)RGB.R-0.289*(double)RGB.G+0.436*(double)RGB.B;
YUV.V= 0.615*(double)RGB.R-0.515*(double)RGB.G-0.100*(double)RGB.B;
}
//CMYK颜色模式转换成RGB颜色模式:
void ColorType::CMYKtoRGB()
{
CMYK.C+=CMYK.K;
CMYK.M+=CMYK.K;
CMYK.Y+=CMYK.K;
RGB.R=255-CMYK.C;
RGB.G=255-CMYK.M;
RGB.B=255-CMYK.Y;
}
//HSI颜色模式转换成RGB颜色模式:
void ColorType::HSItoRGB()
{
int v1=HSI.S*cos(HSI.H);
int v2=HSI.S*sin(HSI.H);
int iR=(int)(0.816496*v2+0.57735*HSI.I);
int iG=(int)(0.7071*v1-0.40825*v2+0.57735*HSI.I);
int iB=(int)(-0.7071*v1-0.40825*v2+0.57735*HSI.I);
RGB.R= (BYTE) BOUND(iR0255) ;
RGB.G= (BYTE) BOUND(iG0255) ;
RGB.B= (BYTE) BOUND(iB0255) ;
}
//YCbCr颜色模式转换成RGB颜色模式:
void ColorType::YCbCrtoRGB()
{
int iR=(int)(YCbCr.Y+1.40200*(YCbCr.Cr-128));
int iG=(int)(YCbCr.Y-0.34414*(YCbCr.Cb-128)-0.71414*(YCbCr.Cr-128));
int iB=(int)(YCbCr.Y+1.77200*(YCbCr.Cb-128));
RGB.R= (BYTE) BOUND(iR0255) ;
RGB.G= (BYTE) BOUND(iG0255) ;
RGB.B= (BYTE) BOUND(iB0255) ;
}
//YUV颜色模式转换成RGB颜色模式:
void ColorType::YUVtoRGB( )
{
int iR=(int)(YUV.Y+1.140*YUV.V);
int iG=(int)(YUV.Y-0.395*YUV.U-0.581*YUV.V);
int iB=(int)(YUV.Y+2.032*YUV.U);
RGB.R= (BYTE) BOUND(iR0255) ;
RGB.G= (BYTE) BOUND(iG0255) ;
RGB.B= (BYTE) BOUND(iB0255) ;
}
//全部转换成RGB颜色模式:
void ColorType::RGBtoXXX(int n)
{ switch(n)
{case 1: {RGBtoCMYK();
RGBtoHSI();
RGBtoYCbCr();
RGBtoYUV();}break; //改变的是RGB值
case 2: {RGBtoHSI();
RGBtoYCbCr();
RGBtoYUV();}break; //改变的是CM
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4434 2005-11-16 03:51 颜色模式\版本1\colortye.dsp
文件 541 2005-11-16 00:18 颜色模式\版本1\colortye.dsw
文件 58368 2005-11-16 21:02 颜色模式\版本1\colortye.ncb
文件 53760 2005-11-16 21:02 颜色模式\版本1\colortye.opt
文件 1706 2005-11-16 21:02 颜色模式\版本1\colortye.plg
文件 3579 2005-11-16 21:02 颜色模式\版本1\ColorType.cpp
文件 1740 2005-11-16 21:02 颜色模式\版本1\ColorType.h
目录 0 2005-11-16 21:02 颜色模式\版本1\Debug
文件 1002 2005-11-16 21:02 颜色模式\版本1\main.cpp
文件 3859 2005-11-16 04:40 颜色模式\版本1\使用说明1.txt
目录 0 2005-11-16 21:02 颜色模式\版本1
文件 4391 2005-11-16 11:36 颜色模式\版本2\COLor.dsp
文件 535 2005-11-16 11:32 颜色模式\版本2\COLor.dsw
文件 58368 2005-11-16 21:03 颜色模式\版本2\COLor.ncb
文件 53760 2005-11-16 21:03 颜色模式\版本2\COLor.opt
文件 1194 2005-11-16 11:35 颜色模式\版本2\COLor.plg
目录 0 2005-11-16 20:48 颜色模式\版本2\Debug
文件 3301 2005-11-16 11:35 颜色模式\版本2\head.cpp
文件 1133 2005-11-16 11:53 颜色模式\版本2\head.h
文件 521 2005-11-16 11:53 颜色模式\版本2\main.cpp
文件 135 2005-11-16 11:51 颜色模式\版本2\使用说明2.txt
目录 0 2005-11-16 21:03 颜色模式\版本2
目录 0 2005-11-16 20:48 颜色模式
----------- --------- ---------- ----- ----
252545 24
- 上一篇:基于qt开发的会员管理系统
- 下一篇:cookies 浏览器
评论
共有 条评论