HSV 和 RGB 互换 函数 c++
2011-01-30 15:40
239 查看
//函数把 rgb转成hsv
function setRGBToHSV(r1,r2,r3) {
var maxJ = Math.max(r1,r2,r3);
var minJ = Math.min(r1,r2,r3);
var _max = maxJ-minJ;
if(r1
== r2 && r2 == r3) {
H = 0;
S = 0;
} else {
switch(maxJ)
{
case r1:
H =
(r2-r3)/_max;
case r2:
H = 2 +
(r3-r1)/_max;
case r3:
H = 4 +
(r1-r2)/_max;
}
H *= 60;
if(H
< 0) H += 360;
H = Math.round(H);
S = Math.round(100*(maxJ -
minJ)/maxJ);
}
V = Math.round(100*maxJ/255);
}
//函数把val转到r、g、b里面
void HSV2RGB(float val[], uchar *r, uchar *g, uchar *b)
{
//hsv to rgb
int i;
float f, p, q, t;
val[0] /= (float)60;
i = (int)val[0];
f = val[0]-i;
p = val[2] * (1- val[1]);
q = val[2] * (1-val[1] * f);
t = val[2] * (1-val[1] * (1-f));
switch(i){
case 0:{
*r = val[2]*255;
*g = t*255;
*b = p*255;
break;
}
case 1:{
*r = q*255;
*g = val[2]*255;
*b = p*255;
break;
}
case 2:{
*r = p*255;
*g = val[2]*255;
*b = t*255;
break;
}
case 3:{
*r = p*255;
*g = q*255;
*b = val[2]*255;
break;
}
case 4:{
*r = t*255;
*g = p*255;
*b = val[2]*255;
break;
}
case 5:{
*r = val[2]*255;
*g = p*255;
*b = q*255;
break;
}
}
}
function setRGBToHSV(r1,r2,r3) {
var maxJ = Math.max(r1,r2,r3);
var minJ = Math.min(r1,r2,r3);
var _max = maxJ-minJ;
if(r1
== r2 && r2 == r3) {
H = 0;
S = 0;
} else {
switch(maxJ)
{
case r1:
H =
(r2-r3)/_max;
case r2:
H = 2 +
(r3-r1)/_max;
case r3:
H = 4 +
(r1-r2)/_max;
}
H *= 60;
if(H
< 0) H += 360;
H = Math.round(H);
S = Math.round(100*(maxJ -
minJ)/maxJ);
}
V = Math.round(100*maxJ/255);
}
//函数把val转到r、g、b里面
void HSV2RGB(float val[], uchar *r, uchar *g, uchar *b)
{
//hsv to rgb
int i;
float f, p, q, t;
val[0] /= (float)60;
i = (int)val[0];
f = val[0]-i;
p = val[2] * (1- val[1]);
q = val[2] * (1-val[1] * f);
t = val[2] * (1-val[1] * (1-f));
switch(i){
case 0:{
*r = val[2]*255;
*g = t*255;
*b = p*255;
break;
}
case 1:{
*r = q*255;
*g = val[2]*255;
*b = p*255;
break;
}
case 2:{
*r = p*255;
*g = val[2]*255;
*b = t*255;
break;
}
case 3:{
*r = p*255;
*g = q*255;
*b = val[2]*255;
break;
}
case 4:{
*r = t*255;
*g = p*255;
*b = val[2]*255;
break;
}
case 5:{
*r = val[2]*255;
*g = p*255;
*b = q*255;
break;
}
}
}
相关文章推荐
- openCV RGB转HSV函数解析
- RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)
- 基于OpenCV的RGB和HSV色彩空间相互转换C++程序
- C++ RGB转HSV
- RGB 转换 Ycbcr 调用 C++和MATLAB中的函数,得到了两种不同的运算结果
- C/C++ 工具函数 —— 大端模式和小端模式的互换
- MATLAB自定义函数:RGB与HSI颜色空间互换
- RGB与HSI颜色空间互换函数(matlab)
- RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)
- HSV颜色到RGB的转换C++代码 直接可用
- 基于OpenCV的RGB和HSV色彩空间相互转换C++程序
- RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)
- 设置颜色的函数:rgb,hsv,color palettes
- C中如何调用C++函数?
- (转载)你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
- C++字符串替换函数具体实现方法详解
- C++中静态数据成员以及静态成员函数
- C++(8):指向不同类型变量或函数的pointer
- [C++基础]041_函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)
- C++知识点复习——继承关系&动态绑定&虚函数