2019独角兽企业重金招聘Python工程师标准>>>

代码来自http://www.cocoabuilder.com/archive/cocoa/198570-here-is-code-to-convert-rgb-hsb.html

C语言,可在Object-C中调用

#define UNDEFINED 0typedef struct {float r, g, b;} RGBType;
typedef struct {float h, s, v;} HSVType;// Theoretically, hue 0 (pure red) is identical to hue 6 in these transforms. Pure
// red always maps to 6 in this implementation. Therefore UNDEFINED can be
// defined as 0 in situations where only unsigned numbers are desired.
RGBType RGBTypeMake(float r, float g, float b);
HSVType HSVTypeMake(float h, float s, float v);HSVType RGB_to_HSV( RGBType RGB );
RGBType HSV_to_RGB( HSVType HSV );
#include <math.h>
#include "HSV.h"inline RGBType RGBTypeMake(float r, float g, float b)
{RGBType rgb = {r, g, b};return rgb;
}inline HSVType HSVTypeMake(float h, float s, float v)
{HSVType hsv = {h, s, v};return hsv;
}HSVType RGB_to_HSV( RGBType RGB )
{// RGB are each on [0, 1]. S and V are returned on [0, 1] and H is// returned on [0, 1]. Exception: H is returned UNDEFINED if S==0.float R = RGB.r, G = RGB.g, B = RGB.b, v, x, f;int i;x = fminf(R, G);x = fminf(x, B);v = fmaxf(R, G);v = fmaxf(v, B);if(v == x) return HSVTypeMake(UNDEFINED, 0, v);f = (R == x) ? G - B : ((G == x) ? B - R : R - G);i = (R == x) ? 3 : ((G == x) ? 5 : 1);return HSVTypeMake(((i - f /(v - x))/6), (v - x)/v, v);
}RGBType HSV_to_RGB( HSVType HSV )
{// H is given on [0, 1] or UNDEFINED. S and V are given on [0, 1].// RGB are each returned on [0, 1].float h = HSV.h * 6, s = HSV.s, v = HSV.v, m, n, f;int i;if (h == 0) h=.01;if(h == UNDEFINED) return RGBTypeMake(v, v, v);i = floorf(h);f = h - i;if(!(i & 1)) f = 1 - f; // if i is evenm = v * (1 - s);n = v * (1 - s * f);switch (i){case 6:case 0: return RGBTypeMake(v, n, m);case 1: return RGBTypeMake(n, v, m);case 2: return RGBTypeMake(m, v, n);case 3: return RGBTypeMake(m, n, v);case 4: return RGBTypeMake(n, m, v);case 5: return RGBTypeMake(v, m, n);}return RGBTypeMake(0, 0, 0);
}

转载于:https://my.oschina.net/kevinvane/blog/484817

HSV与RGB之间相互转换相关推荐

  1. android hsv,HSV与RGB之间相互转换

    C语言,可在Object-C中调用 #define UNDEFINED 0 typedef struct {float r, g, b;} RGBType; typedef struct {float ...

  2. 使用C++实现YUV格式图像与RGB格式图像之间相互转换

    使用C++实现YUV格式图像与RGB格式图像之间相互转换 一.RGB与YUV转换公式 1.RGB转YUV 1)RGB转换亮度与色差信号公试: 2)归一化为YUV的转化公试为: 2.YUV转RGB 二. ...

  3. 图像处理-HSV和RGB相互转换

    1.实现RGB到HSV的转换函数,函数声明:HSV RGB2HSV(COLORREF c) 函数功能:把COLORREF类对象c的颜色信息转换成一个HSV类对象返回. 代码: #include< ...

  4. HSV颜色空间和RGB颜色空间相互转换C语言实现

    HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model).这个模型中颜色的参数 ...

  5. 颜色空间模型(HSV\LAB\RGB\CMYK)

    通过Photoshop的拾色器,我们知道表征颜色的模型的不止一种,本文将系统并且详细讨论这四种模型(HSV.LAB.RGB和CMYK)之间的联系以及应用. 本文部分章节整合了多位优秀博主的博客(链接见 ...

  6. HSI、HSV、RGB、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型的区别

    HSI.HSV.RGB.CMYK.HSL.HSB.Ycc.XYZ.Lab.YUV颜色模型的区别 HSV颜色空间 HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个 ...

  7. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV等颜色模型简介

    基本概念 所谓颜色模型就是指某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色.例如,RGB颜色模型就是三维直角坐标颜色系统的一个单位正方体.颜色模型的用途是在某个颜色域内方便的指定颜色, ...

  8. c语言xml序列化,C# XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...

  9. 图像HSV和RGB的相互转换

    1. HSV转RGB max=max(R,G,B) min=min(R,G,B) if R = max, H = (G-B)/(max-min) if G = max, H = 2 + (B-R)/( ...

最新文章

  1. SAP EWM - 其他主数据 - 运输主数据-1
  2. laravel json字段添加_Laravel 6.0.4 中将添加计划任务事件
  3. 【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3
  4. 5 点击图换下一张_如何制作一张高点击率主图
  5. web servieces 学习小栗子
  6. Service Mesh 如何重定义云原生计算?阿里服务网格技术大揭秘
  7. 如何在Linux中符号链接文件? [关闭]
  8. 渗透之——ASP Web提权
  9. zzulioj1001C语言答案,ZZULIOJ
  10. (一)微信小程序云开发之登录界面设计
  11. switch比ifelse效率高
  12. DBUtils和连接池的笔记和总结
  13. 【目标流畅阅读文献】kick off
  14. SQL——查询和1002号的同学学习的课程完全相同的其他同学的学号和姓名
  15. 【Astar寻路算法图解】Java实现
  16. Builder模式总结
  17. C++ 优先队列priority_queue,如何定义大小根堆
  18. Redis存key出现\xAC\xED\x00\x05t\x00\x14
  19. 看完现在年轻人的开发环境,我汗颜了,不服老不行【如何让你的IDLE与众不同】
  20. Oracle分页的俩种方法

热门文章

  1. python之subprocess
  2. GIS讲堂第一课-开源GIS环境搭建相关内容
  3. 收音机主页网站服务器列表,谁有收音机频道列表,要山东的,越详细越好
  4. java中的数据结构——树
  5. JS打印三角形排列、四边形排列和菱形排列
  6. 每日经典算法题(十三) 逆推算法(平方根相关)
  7. linux dhcp 安装系统,Linux上基于网络自动化安装系统(CentOS6.5+DHCP+TFTP+PXE)
  8. 淘宝商品价格定向爬虫
  9. 在处理时有错误发生:google-chrome-stable/
  10. 转: 云计算openstack—云计算、大数据、人工智能