OpenCV HSV与RGB颜色模型的区别

HSV与RGB颜色模型的区别

HSV(Hue, Saturation, Value)和 RGB(Red, Green, Blue)是两种不同的颜色表示方式,主要区别如下:

对比项RGBHSV
定义基于红、绿、蓝三原色的混合基于色相(H)、饱和度(S)、明度(V)的直观描述
适用场景显示器、数字图像处理(计算机直接使用)调色板、图像编辑(更符合人类感知)
颜色调整修改R、G、B分量(不直观)调整H(颜色)、S(鲜艳度)、V(亮度)更直观
表示方式三个数值(0-255或者0-1)H(0-360°)、S(0-100%)、V(0-100%)
颜色空间线性叠加(加色模型)圆柱/圆锥模型(更接近人眼感知)
典型应用网页颜色(#RRGGBB)、计算机图形Photoshop 调色、颜色选择器

1. RGB(红绿蓝)

  • 原理:通过 红(R)、绿(G)、蓝(B) 三个分量的不同强度混合成各种颜色。

特点:

  • 加色模型(叠加越亮,如 R+G+B=白色)。
  • 适用于显示器、摄像头等电子设备。
  • 调整颜色不直观(比如想调“更深的红色”需要同时改 R、G、B)。

示例:

  • 纯红色:(255, 0, 0)
  • 黑色:(0, 0, 0)
  • 白色:(255, 255, 255)

2. HSV(色相、饱和度、明度)

  • 原理:用 色相(H)、饱和度(S)、明度(V) 描述颜色。
    • H(Hue):颜色类型(0°-360°,如 0°=红,120°=绿,240°=蓝)。
    • S(Saturation):颜色鲜艳程度(0%=灰色,100%=纯色)。
    • V(Value):亮度(0%=黑色,100%=最亮)。

特点

  • 更符合人咧对颜色的感知,调色更加直观
  • 适用于设计、美术、图像处理(如调整“饱和度”或“色相”)

实例

  • 纯红色: (0°, 100%, 100%)
  • 灰色:(0°, 0%, 50%)
  • 深蓝色:(240°, 100%, 50%)

3、相互转换

  • RGB → HSV:计算色相角度、饱和度、亮度。
  • HSV → RGB:根据 H、S、V 计算对应的 R、G、B 值。

代码实现

import colorsys
# RGB 转 HSV(输入范围 0-1)
h, s, v = colorsys.rgb_to_hsv(1.0, 0.0, 0.0)  # 红色 → (0.0, 1.0, 1.0)
# HSV 转 RGB
r, g, b = colorsys.hsv_to_rgb(0.0, 1.0, 1.0)  # 红色 → (1.0, 0.0, 0.0)
import cv2 as cv
#读图
cat = cv.imread('../../images/cat1.png')
#转灰度
gray = cv.cvtColor(cat, cv.COLOR_BGR2GRAY)
print(gray.shape)
cv.imshow('gray', gray)
#转HSV
hsv = cv.cvtColor(cat, cv.COLOR_BGR2HSV)
cv.imshow('hsv', hsv)
#转RGB
rgb = cv.cvtColor(cat, cv.COLOR_BGR2RGB)
cv.imshow('rgb', rgb)
cv.waitKey(0)
cv.destroyAllWindows()

4、如何选择

  • 用 RGB:编程、网页设计、显示器显示。
  • 用 HSV:调色、图像处理(如调整亮度/饱和度)、美术设计。

HSV 的优势在于 更符合人类直觉,比如:

  • 想调“浅蓝色”?增加 V(明度)。

  • 想调“更鲜艳的绿色”?增加 S(饱和度)。

  • 想换颜色?直接改 H(色相)。

而 RGB 需要同时调整多个分量,不够直观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92292.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

具有柔性关节的机械臂matlab仿真

柔性关节机械臂MATLAB仿真方案,包含动力学建模、控制器设计和可视化分析。该方案基于拉格朗日方程建立柔性关节模型,并实现了PD控制、滑模控制和自适应控制三种控制策略。 MATLAB仿真 %% 柔性关节机械臂仿真 - 完整系统 % 作者: MATLAB技术助手 % 日期: …

数据结构—队列和栈

1.二级指针的使用二级指针: 1. 在被调函数中,想要修改主调函数中的指针变量,需要传递该指针变量的地址,形参用二级指针接收。 2.指针数组的数组名是一个二级指针,指针数组的数组名作为参数传递时,可用二级指…

均线:从市场脉搏到量子计算的时空密码

一部跨越百年的技术分析进化史,揭示金融市场的数学本质 引言:金融市场的永恒罗盘 在华尔街百年风云中,一个简单的数学工具始终闪耀着智慧光芒——移动平均线(Moving Average)。从杰西利弗莫尔的手绘图表到文艺复兴科技的量子模型,均线系统完成了从经验工具到科学框架的惊…

Python 通过Playwright+OpenCV破解滑动验证码 实例

由于公司最近需要对接某业务系统,涉及到部分数据需要提交至其它平台业务系统,只有其它平台账户,没有接口,因此做此开发。首先通过OpenCV计算出验证验证码滑块距离,根据距离,使用 Playwright 利用滑动距离模…

山东省天地图API申请并加载到QGIS和ArcGIS Pro中

目的:在QGIS/ArcGIS Pro中加载山东省不同时期的历史影像1、申请API 山东省天地图的API和国家天地图的API不通用,需要单独申请。 https://shandong.tianditu.gov.cn/ 打开本地服务资源找到影像的详情页 点击申请地址按照下面的步骤一步一步来,…

qt窗口--02

文章目录qt窗口--02QMessageBoxQColorDialogQFileDialogQFontDialogQInputDialog、结语很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!! 作者:٩( ‘ω’ )و260 我的专栏:qt&#…

Linux seLinux

Linux seLinux 1、什么是selinux,security enhanced linux–安全加强的linux。 是由美国国家安全局开发的以及历史。selinux之前是基于自主存取控制方法DAC, 只要符合权限即可,通过suid和sgid特殊权限存在有一定的安全隐患, 甚至一…

Linux: NFS 服务部署与autofs自动挂载的配置

Linux: NFS 服务部署与autofs自动挂载的配置NFS(Network File System,网络文件系统)是一种基于 TCP/IP 协议的网络文件共享协议,允许不同主机在网络中共享文件资源,实现跨主机的文件访问与管理,…

【深度学习②】| DNN篇

0 序言 本文将系统介绍基于PyTorch的深度神经网络(DNN)相关知识,包括张量的基础操作、DNN的工作原理、实现流程,以及批量梯度下降、小批量梯度下降方法和手写数字识别案例。通过学习,你将掌握DNN的核心概念、PyTorch实…

Xcode 26 如何在创建的 App 包中添加特定的目录

功能需求 在某些情况下,我们需要将特定文件放在 Xcode 编译链接后 App 包里的指定目录中,比如将 AI 大模型相关文件放在它们对应名称的目录中: 正常情况下,Xcode 会将项目目录中的所有文件都平铺放到 App 包的根目录里。那么,要如何形成上面这种文件目录层级呢? 在本篇…

linux-系统性能监控

linux-系统性能监控一、cpu1.1 查看cpu的信息1.2 cpu性能指标1.3 编写监控cpu使用率的脚本1.4 查找出使用cpu最高的10个进程二、内存2.1 查看内存信息2.2 交换(swap)分区2.2.1 查看交换分区的积极程度2.2.2 查看交换分区的大小2.2.3 管理交换分区2.3 编写…

AgxOrin平台JetPack5.x版本fix multi-cam race condition 补丁

本文包含三个针对NVIDIA Linux驱动程序的补丁修复: 多摄像头竞争条件修复 在capture-ivc驱动中新增信号量机制,解决多摄像头同时操作时的竞争条件问题(Bug 4425972)。主要修改包括在通道上下文结构中添加信号量,并在通道ID通知和取消注册时进行信号量操作。 内存泄漏修复…

【Go】P3 Go语言程序结构

Go语言程序结构Go语言程序结构命名规则与编程惯例核心规则四种声明语句详解var声明:变量声明const声明:常量声明type声明:类型定义func声明:函数声明简短变量声明(:)使用规则和限制指针:安全的内存地址操作基本概念和操…

【机器学习深度学习】知识蒸馏实战:让小模型拥有大模型的智慧

目录 引言:模型压缩的迫切需求 一、知识蒸馏的核心原理 1.1 教师-学生模式 1.2 软目标:知识传递的关键 1.3 蒸馏损失函数 二、实战:Qwen模型蒸馏实现 2.1 环境配置与模型加载 2.2 蒸馏损失函数实现 2.3 蒸馏训练流程 2.4 训练优化技…

基于MCP提示构建工作流程自动化的实践指南

引言 在现代工作和生活中,我们经常被各种重复性任务所困扰——从每周的膳食计划到代码审查反馈,从文档更新到报告生成。这些任务虽然不复杂,却消耗了大量宝贵时间。MCP(Model Context Protocol)提示技术为解决这一问题…

apache-tomcat-11.0.9安装及环境变量配置

一、安装从官网上下载apache-tomcat-11.0.9,可以下载exe可执行文件版本,也可以下载zip版本,本文中下载的是zip版本。将下载的文件解压到指定目录;打开tomcat安装目录下“\conf\tomcat-users.xml”文件;输入以下代码,pa…

Java 大视界 -- Java 大数据机器学习模型在电商用户生命周期价值评估与客户关系精细化管理中的应用(383)

Java 大视界 -- Java 大数据机器学习模型在电商用户生命周期价值评估与客户关系精细化管理中的应用(383)引言:正文:一、电商用户运营的 “糊涂账”:不是所有客户都该被讨好1.1 运营者的 “三大错觉”1.1.1 错把 “过客…

豆包新模型与PromptPilot工具深度测评:AI应用开发的全流程突破

目录引言一、豆包新模型技术解析1.1 豆包新模型介绍1.2 核心能力突破1.2.1 情感交互能力1.2.2 推理与编码能力二、PromptPilot工具深度测评2.1 PromptPilot介绍2.2 工具架构与核心功能2.3 一个案例讲通:市场调研报告2.3.1 生成Prompt2.3.2 批量集生成2.3.3 模拟数据…

【代码随想录day 12】 力扣 144.145.94.前序遍历中序遍历后序遍历

视频讲解:https://www.bilibili.com/video/BV1Wh411S7xt/?vd_sourcea935eaede74a204ec74fd041b917810c 文档讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html#%E5%85%B6%E4%BB%96%E8%A…

【Unity】 HTFramework框架(六十七)UDateTime可序列化日期时间(附日期拾取器)

更新日期:2025年8月6日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引一、UDateTime可序列化日期时间1.定义UDateTime字段2.日期拾取器(编辑器)3…