首页 > 其他分享 >RGB到HSV的转换原理及例程

RGB到HSV的转换原理及例程

时间:2024-04-01 09:29:06浏览次数:31  
标签:颜色 例程 max value RGB HSV 通道

RGB(红绿蓝)和HSV(色相、饱和度、明度)是两种常用的颜色模型,RGB用于表示彩色图像,而HSV主要用于描述颜色的特征。RGB到HSV的转换涉及颜色的几何和三维空间的变换。

RGB颜色模型使用红、绿、蓝三个通道来表示各种颜色。每个通道的取值范围为0-255,其中0表示没有该通道的颜色,255表示通道饱和度最高的颜色。

HSV颜色模型使用色相(Hue)、饱和度(Saturation)、明度(Value)三个分量来描述颜色。色相表示颜色的类型或者说种类,饱和度表示颜色的纯度或者说鲜艳度,明度表示颜色的亮度。

RGB到HSV的转换可以通过以下步骤实现:

  1. 将RGB颜色的通道值除以255,将其转换为范围在0-1之间的小数。

  2. 计算色相(Hue):

    • 如果最大通道值等于最小通道值,则色相为0(表示无色)。
    • 如果最大通道值为红色通道(R),则色相为 ((G - B) / (最大通道值 - 最小通道值)) mod 6。
    • 如果最大通道值为绿色通道(G),则色相为 ((B - R) / (最大通道值 - 最小通道值)) + 2。
    • 如果最大通道值为蓝色通道(B),则色相为 ((R - G) / (最大通道值 - 最小通道值)) + 4。
    • 将色相值乘以60,使其处于0-360度的范围之内。
  3. 计算饱和度(Saturation):

    • 如果最大通道值为0,则饱和度为0,表示颜色是灰色的。
    • 否则,饱和度为 1 - (最小通道值 / 最大通道值)。
  4. 计算明度(Value):

    • 明度为最大通道值除以255。

转换完成后,得到的HSV值即为RGB颜色对应的HSV值。

需要注意的是,由于RGB和HSV是两种不同的颜色模型,他们之间并不是一一对应的关系。因此,在进行RGB到HSV的转换时,可能会存在一些近似和舍入误差。实际应用中,可以根据具体需求调整参数和策略,以获得更好的转换结果。

下面是一个简单的例程,演示如何将RGB颜色转换为HSV颜色。请注意,这只是一个基本的转换算法,实际应用中可能需要考虑更多因素。

def rgb_to_hsv(r, g, b):
    # 将RGB值转换为0-1范围内的百分比
    r = r / 255.0
    g = g / 255.0
    b = b / 255.0

    # 计算最大值和最小值
    max_value = max(r, g, b)
    min_value = min(r, g, b)

    # 计算色相(Hue)
    if max_value == min_value:
        hue = 0
    elif max_value == r:
        hue = ((g - b) / (max_value - min_value)) % 6
    elif max_value == g:
        hue = ((b - r) / (max_value - min_value)) + 2
    elif max_value == b:
        hue = ((r - g) / (max_value - min_value)) + 4
    
    hue *= 60
    
    # 计算饱和度(Saturation)
    if max_value == 0:
        saturation = 0
    else:
        saturation = 1 - (min_value / max_value)
    
    # 计算明度(Value)
    value = max_value

    return (hue, saturation, value)

# 示例:将RGB颜色(128, 64, 192)转换为HSV颜色
r, g, b = 128, 64, 192
hsv = rgb_to_hsv(r, g, b)
print(hsv)

输出结果为:

(270.0, 0.6666666666666667, 0.7529411764705882)

这表示RGB颜色(128, 64, 192)转换为HSV颜色时,得到的HSV值为色相(H)为270度,饱和度(S)为0.67,明度(V)为0.75。

标签:颜色,例程,max,value,RGB,HSV,通道
From: https://blog.csdn.net/wangjiaweiwei/article/details/132050689

相关文章

  • 启动应用程序出现fthsvc.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个fthsvc.dll文件(挑选合适的版本文件)把它放......
  • mybatis案例程序
    前置工作导包(mysql-connector-java、mybatis)实体类Mapper层1.接口publicinterfaceBookMapper{publicBookgetBookById(IntegerbookID);}2.创建Mapper的映射文件<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC&qu......
  • 基于傅里叶描述子和HSV颜色特征的KNN水果类型识别,Matlab实现
           博主简介:专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188)       个人主页:Matlab_ImagePro-CSDN博客       原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则......
  • OpenHtmlToPdf工具rgba转rgb
    使用OpenHtmlToPdf工具将html转pdf时不识别html中的rgba属性,导致颜色显示出现问题测试字符串StringpdflFile="/yourPath/ppm-3.pdf";FileOutputStreamoutputStream=newFileOutputStream(pdflFile);try(FileOutputStreamfos=newFileOutputStream(p......
  • RGBLCD基本知识
    学习资料来源于网络https://www.bilibili.com/video/BV1yE411h7uQ?p=55&spm_id_from=pageDriver&vd_source=432ba293ecfc949a4174ab91ccc526d6https://doc.embedfire.com/linux/imx6/driver/zh/latest/bare_metal/elcdif.html# 基础概念:LCD:LiquidCrystalDisplay液晶是一......
  • 693、基于51单片机的RGB调色(PWM)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能采用PWM调制方式进行三基色LED配色控制的研究,实验证明其电路简单、操作方便,能很好的实现各种颜色的配置和切换使用6个按键分别......
  • Monitor test Philips 279P1B 4K 60FPS 10bit HDR400 99%-Adobe RGB, 99% P3, 99% SRG
    SoIboughtthismonitor.Thespecsarefromhere: https://www.usa.philips.com/c-p/279P1B_27/brilliance-lcd-monitor-with-usb-c ---wordsinshort,DP1.4,HDMI2.0,DP1.4viaUSB-CPD90WmaxWhenenablingUSB-Chigh-resolutionmode(10bit),withmym1......
  • Python教程:如何获取颜色的RGB值
    简介在许多计算机图形和图像处理应用中,颜色的RGB值是至关重要的信息。Python作为一种多功能的编程语言,提供了丰富的工具和库,可以轻松地获取颜色的RGB值。本文将介绍如何使用Python获取颜色的RGB值,以及一些实际应用的示例。使用PIL工具获取颜色的RGB值PIL(PythonImagingLibrar......
  • YUV与RGB转换公式(BT601、BT709、BT2020)
    1、在图像处理中经常需要对图像数据进行转换,最常见的莫过于YUV2RGB。并且这个转化在不同的标准下有不同的转化公式。2、如果公式不匹配,则会导致转换后的图像效果有偏差。3、full_range下Y\U\V的取值范围都为[0,255];limit_range(也叫part_range)下Y的取值范围为[16,235],UV的......
  • 通用定时器功能案例 RGB 直流电机 舵机 超声波
    复盘局:RGB彩灯:(定时器输出比较功能)        功能效果:按下按键1亮红灯 按下按键2亮绿灯 按下按键3亮蓝灯 按下按键4随机变色RGB彩灯原理:通过改变三个灯不同的亮度混合在一起形成不同的颜色总体配置思路:    1.初始化配置        {     ......