图像处理-颜色识别-颜色格式转换

图像处理-颜色识别-颜色格式转换代码 图像处理 颜色识别 颜色格式

大家好,欢迎来到IT知识分享网。

1.RGB色彩空间

概念:

  • RGB 代表 Red(红色)、Green(绿色)和 Blue(蓝色)。这三种颜色的光线混合可以生成各种颜色。

色彩表示:

  • 颜色通道:每种颜色(红、绿、蓝)通常在0到255的范围内表示,其中0表示无光(黑色),255表示最大亮度。
  • 每种颜色可以用三个值表示,例如 (255, 0, 0) 代表红色,(0, 255, 0) 代表绿色,(0, 0, 255) 代表蓝色。
  • 组合颜色:通过组合不同的RGB值,可以表示各种颜色。例如,(255, 255, 255) 表示白色,(0, 0, 0) 表示黑色,(255, 255, 0) 表示黄色。

 图像处理-颜色识别-颜色格式转换

 2.HSV色彩空间

概念:

  • 色相(H):表示颜色的种类。圆柱的圆周表示色相,角度越大,颜色越不同。
  • 饱和度(S):表示颜色的纯度或强度。圆柱的半径表示饱和度,从中心到圆周,饱和度从低到高。
  • 明度(V):表示颜色的亮度或强度。圆柱的高度表示明度,从底部的黑色到顶部的纯色。

 图像处理-颜色识别-颜色格式转换

 3.RGB与HSV格式之间的转换

        由于RGB图像中将亮度,饱和度等信息也包含在了R、G、B信息中,因此, 处理图像过程中会受到光照的影响,无法获得准确的R、G、B信息,因此需要将RGB图像转化为HSV格式图像进行处理。

  • 从HSV到RGB
    1. 计算色相对应的RGB值:
      • 如果色相在0°到60°之间,计算颜色分量:C = V * SX = C * (1 - |(H / 60°) % 2 - 1|)
      • 根据色相值调整颜色分量的顺序。
    2. 添加偏移量m到RGB值:m = V - C
    3. 计算最终的RGB值:R = (R + m) * 255G = (G + m) * 255B = (B + m) * 255
  • 从RGB到HSV
    1. 计算RGB的最大值Cmax和最小值Cmin,并计算差值Δ = Cmax - Cmin
    2. 计算明度:V = Cmax
    3. 计算饱和度:S = Δ / Cmax(如果Cmax为0,则S为0)
    4. 计算色相:
      • 如果Δ为0,则H为0
      • 根据Cmax的位置计算色相值

 4.RGB与HSV格式之间转化代码python格式

def rgb_to_hsv(r, g, b): r, g, b = r / 255.0, g / 255.0, b / 255.0 # Normalize RGB values to [0, 1] mx = max(r, g, b) mn = min(r, g, b) h = s = v = (mx + mn) / 2.0 c = mx - mn if c != 0: if mx == r: h = (g - b) / c elif mx == g: h = (b - r) / c + 2 elif mx == b: h = (r - g) / c + 4 h *= 60 if h < 0: h += 360 s = 0 if mx == 0 else (mx - mn) / mx v = mx return (h, s * 100, v * 100) def hsv_to_rgb(h, s, v): s /= 100.0 v /= 100.0 c = v * s x = c * (1 - abs(((h / 60) % 2) - 1)) m = v - c r = g = b = 0 if 0 <= h < 60: r, g, b = c, x, 0 elif 60 <= h < 120: r, g, b = x, c, 0 elif 120 <= h < 180: r, g, b = 0, c, x elif 180 <= h < 240: r, g, b = 0, x, c elif 240 <= h < 300: r, g, b = x, 0, c elif 300 <= h < 360: r, g, b = c, 0, x r = int((r + m) * 255) g = int((g + m) * 255) b = int((b + m) * 255) return (r, g, b) # Example usage rgb_color = (255, 0, 0) # Red hsv_color = rgb_to_hsv(*rgb_color) print(f"RGB to HSV: {rgb_color} -> {hsv_color}") hsv_color = (0, 100, 100) # Red in HSV rgb_color = hsv_to_rgb(*hsv_color) print(f"HSV to RGB: {hsv_color} -> {rgb_color}") 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137173.html

(0)
上一篇 2025-06-22 16:45
下一篇 2025-06-22 17:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信