网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月03日漏签0天
vb吧 关注:156,099贴子:1,166,218
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 4回复贴,共1页
<<返回vb吧
>0< 加载中...

RGB与hsv的问题

  • 只看楼主
  • 收藏

  • 回复
  • cxy5636917
  • 简易程序
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
'Option Explicit
Function Max(aa As Integer, bb As Integer, cc As Integer) As Integer
If aa >= bb Then Max = aa Else Max = bb
If Max <= cc Then Max = cc
End Function
Function Min(aa As Integer, bb As Integer, cc As Integer) As Integer
If aa <= bb Then Min = aa Else Min = bb
If Min >= cc Then Min = cc
End Function
Private Sub Command1_Click()
Dim R As Integer
Dim G As Integer
Dim B As Integer
R = 74
G = 81
B = 180
MaxValue = Max(R, G, B)
MinValue = Min(R, G, B)
If R = MaxValue Then H = (G - B) / (MaxValue - MinValue) * 60
If G = MaxValue Then H = 120 + (B - R) / (MaxValue - MinValue) * 60
If B = MaxValue Then H = 240 + (R - G) / (MaxValue - MinValue) * 60
If H < 0 Then H = H + 360
S = (MaxValue - MinValue) / MaxValue
V = Max(R, G, B)
Text1 = R
Text2 = G
Text3 = B
Text4 = H
Text5 = S
Text6 = V
Picture1.BackColor = RGB(R, G, B)
End Sub
-----------------------------------------------------------------------------------------------------
RGB(74,81,180)转换为HSV的结果:
我的代码算出的是: H=236 S=0.58 V=180
那网上给的是:H=118 S=150 V=180
-----------------------------------------------------------------------------------------------------
网上结果截图为:

为什么H的结果不一样,网上的结果s为什么是150,根据hsv的定义s应该是0----1的呀。
根据hsv的定义v应该是0----1的呀,为什么二者计算出来都是180.。
附: 我采用的公式来源:
=================================================
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。
HSV颜色空间模型
HSV颜色空间模型[1]
色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
饱和度S:取值范围为0.0~1.0;
亮度V:取值范围为0.0(黑色)~1.0(白色)。
RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。
HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。
HSV六棱锥
H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰
HSV颜色空间模型
HSV颜色空间模型[2]
度。相隔120度。互补色分别相差180度。
V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
RGB转化到HSV的算法
max=max(R,G,B):
min=min(R,G,B)
V=max(R,G,B)
S=(max-min)/max:
ifR = max,H =(G-B)/(max-min)* 60
ifG = max,H = 120+(B-R)/(max-min)* 60
ifB = max,H = 240 +(R-G)/(max-min)* 60
ifH < 0,H = H+ 360
==============================================================================
请研究过hsv的给说说。先谢谢了。


  • Zaoly
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码太乱,看不懂……


2025-08-03 09:14:58
广告
不感兴趣
开通SVIP免广告
  • 初音七奈
  • 钩子编程
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
定义里S和V虽然都是0~1,但是实际使用的却是乘上一个数之后取整;而且定义里的V是0~1,算法里却显然不是;还有我怎么记得HSV的取值范围都是0~240来着……


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示