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

#include<iostream>
#include<atlimage.h>
#include<cmath>
#include<algorithm>
using namespace std;//RGB->HSV
class HSV //HSV类
{
public:double H, S, V;HSV() {}HSV(double h, double s, double v) :H(h), S(s), V(v) {}
};HSV RGB2HSV(COLORREF c)//RGB至HSV转换函数
{//从COLORREF类对象c中获取颜色RGB值BYTE R = GetRValue(c);BYTE G = GetGValue(c);BYTE B = GetBValue(c);double H, S, V;//转换公式R = R / 255, G = G / 255, B = B / 255;V = max(R, G, B);if (V != 0) {S = (V - min(R, G, B)) / V;if (V = R){H = (60 * (G - B)) / V - min(R, G, B);if (H < 0){H = H + 360;return HSV(H, S, V);}return HSV(H, S, V);}if (V = G){H = 120 + ((60 * (B - R)) / (V - min(R, G, B)));if (H < 0){H = H + 360;return HSV(H, S, V);}return HSV(H, S, V);}if (V = B){H = 240 + ((60 * (R - G)) / (V - min(R, G, B)));if (H < 0){H = H + 360;return HSV(H, S, V);}return HSV(H, S, V);}}else{S = 0;H = 0;return HSV(H, S, V);}
}

2、实现HSV到RGB的转换函数,函数声明:COLORREF HSV2RGB(HSV hsv)
函数功能:把HSV类对象hsv的颜色信息转换成一个COLORREF类对象返回。
代码:

#include<iostream>
#include<atlimage.h>
#include<cmath>
#include<algorithm>
using namespace std;//HSV->RGB
COLORREF HSV2RGB(HSV hsv)
{//定义变量BYTE R, G, B;double H, S, V;H = hsv.H;S = hsv.S;V = hsv.V;//转换公式double C, X, m;C = V * S;X = C * (1 - (abs(((int)H / 60) % 2 - 1)));m = V - C;if (H >= 0 && H < 60){R = C;G = X;B = 0;R = (R + m) * 255;G = (G + m) * 255;B = (B + m) * 255;//返回COLORREF类型的值COLORREF c;c = RGB(R, G, B);return c;}if (H >= 60 && H < 120){R = X;G = C;B = 0;R = (R + m) * 255;G = (G + m) * 255;B = (B + m) * 255;//返回COLORREF类型的值COLORREF c;c = RGB(R, G, B);return c;}if (H >= 120 && H < 180){R = 0;G = C;B = X;R = (R + m) * 255;G = (G + m) * 255;B = (B + m) * 255;//返回COLORREF类型的值COLORREF c;c = RGB(R, G, B);return c;}if (H >= 180 && H < 240){R = 0;G = X;B = C;R = (R + m) * 255;G = (G + m) * 255;B = (B + m) * 255;//返回COLORREF类型的值COLORREF c;c = RGB(R, G, B);return c;}if (H >= 240 && H < 300){R = X;G = 0;B = C;R = (R + m) * 255;G = (G + m) * 255;B = (B + m) * 255;//返回COLORREF类型的值COLORREF c;c = RGB(R, G, B);return c;}if (H >= 300 && H < 360){R = C;G = 0;B = X;R = (R + m) * 255;G = (G + m) * 255;B = (B + m) * 255;//返回COLORREF类型的值COLORREF c;c = RGB(R, G, B);return c;}
}

图像处理-HSV和RGB相互转换相关推荐

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

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

  2. 图像处理---HSV变换

    1.HSV颜色系统简介 HSV 即使用色相(Hue).饱和度(Saturation).明度(Value)来表示色彩的一种方式,是一种在人们生活中常用的颜色系统,因为它符合人们描述颜色的方式--是什么颜 ...

  3. 图像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)/( ...

  4. YUV RGB 相互转换矩阵

    YUV RGB 相互转换矩阵 不同色域下的转换矩阵 "BT2020 625 D65" RGB2XYZ Matrix: XYZ2RGB Matrix: RGB2YUV Matrix: ...

  5. 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)颜色空间的模型对应于圆柱坐标系中的一个 ...

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

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

  7. 视频教程:YUV420和RGB相互转换--C++实现(二)

    我是Gem,今天做个简单的视频,我的耳机坏了,不好意思,没有声音,请原谅~~        时间很仓促,我把作业全部做完了,完整的过程我演示你看看,有什么问题请你指出来~~ 详细的代码说明和友好的界面 ...

  8. 颜色值JavaScript换算(HSV、RGB、十六进制颜色码)

    颜色值换算 在颜色的计算中,往往需要统一的标准 以下记录一些换算方法 HSV to RGB HSV 是指☞ Hue色相.Saturation饱和度.Value明度(亮度). HSVtoRGB(h, s ...

  9. JAVA编写RGB转HLS,RGB转HSV,HSV转RGB,RGB HLS HSV三种模式转换

    最近看了好多图像识别的例子,但是发现基本全是用Python写的,但是我们这里的需求是使用Java来写,至此,随手写几个函数,发出来供大家参考! 目录 1.RGB & HSV & HLS ...

最新文章

  1. origin画密度直方分布图
  2. MutipartFile使用过程中遇到的坑
  3. NameNode中几个关键的数据结构
  4. 实验:交换机生成树协议STP--功能验证
  5. tablestore换mysql_mysql数据迁移到tablestore
  6. 树状数组求区间和(区间均值)
  7. kotlin获取属性_Kotlin程序获取系统MAC地址
  8. HDS:聚焦未来的投资“冻结”
  9. BIC无代码绘制差异基因火山图
  10. flash 与数据库 图解
  11. MTK 驱动开发 (1)---GPIO架构
  12. 【JVM】Java虚拟机
  13. Flutter进阶—质感设计之标签栏
  14. 趣讲 PowerJob 超强大的调度层,开始表演真正的技术了
  15. Java21天打卡Day5-ifelse
  16. flask + apidoc 生成接口文档(附加一个坑)
  17. SVN 使用beyondcompare 来版本对比
  18. Python爬取新浪英超曼联文章内页--bs4,json,txt和csv以及编码
  19. VScode输入英文感叹号!没有提示模板!!
  20. 常用计算机 启动bios,常见电脑进入bios的方法

热门文章

  1. windows安装Pillow报错找不到zlib
  2. 批处理(bat)脚本语言(4) - FOR循环
  3. 怎么在linux系统中输入日历,在Linux终端中使用日历
  4. Python中整除(//)和取余(%)问题
  5. 论坛数据库设计 mysql_论坛数据库设计初步
  6. 2. 将文件中每一行字符反序
  7. 《浪潮之颠》学习笔记
  8. python画圆形螺旋线_【Python基础】利用 Python 搞定精美网络图!
  9. 导出数据库的longblob
  10. Oracle项目管理系统之项目投议标