• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[昨夜星辰] 【源码+思路】计算偏色之HSV篇 [复制链接]

1#
本篇与【源码+思路】计算偏色之RGB篇一样,目的都是计算偏色,用于一些插件中精准识别颜色和文字。相较而言,HSV比RGB的颜色过渡与肉眼观察更直观,且数值为10进制,无需进行进制转换,但需要注意的是RGB与HSV的数值范围是不一样的。

RGB数值范围:
R:16进制 00~FF 10进制0~255
G:16进制 00~FF 10进制0~255
B:16进制 00~FF 10进制0~255
HSV数值范围:
H:10进制 0~360
S:10进制 0~100
V:10进制 0~100


思路:
1、将要计算的颜色字符串全部拆分为H、S、V。
2、将拆分出全部的H、S、V统计,统计出最大的H、S、V和最小的H、S、V,对应相加并除以二,计算的出H、S、V中间值,即为颜色范围的基础色。
3、将统计出最大的H、S、B或最小的H、S、V与H、S、V中间值对应相减,即可得到颜色范围的偏色。
4、将基础色与偏色连接,即为完整的颜色范围。


注意:
H、S、V中间值计算时可能会出现小数点,应当只保留整数部分后,再取HSV中间值与HSV最大或HSV最小值中差值最大的值作为偏色。

完整源码:
  1. Function 计算HSV偏色(颜色组合)
  2. 颜色组合 = Split(颜色组合, "|")
  3. Dim i, U_颜色组合
  4. U_颜色组合 = UBound(颜色组合)
  5. Dim Min_H, Min_S, Min_V
  6. Dim Max_H, Max_S, Max_V
  7. Dim Avg_H, Avg_S, Avg_V
  8. Dim HSV, H, S, V, D_H, D_S, D_V
  9. HSV = HSV拆分(颜色组合(0))
  10. Min_H = HSV(0)
  11. Min_S = HSV(1)
  12. Min_V = HSV(2)
  13. Max_H = HSV(0)
  14. Max_S = HSV(1)
  15. Max_V = HSV(2)
  16. For i = 1 To U_颜色组合
  17. HSV = HSV拆分(颜色组合(i))
  18. If HSV(0) < Min_H Then
  19. Min_H = HSV(0)
  20. Else
  21. If HSV(0) > Max_H Then
  22. Max_H = HSV(0)
  23. End If
  24. End If
  25. If HSV(1) < Min_S Then
  26. Min_S = HSV(1)
  27. Else
  28. If HSV(1) > Max_S Then
  29. Max_S = HSV(1)
  30. End If
  31. End If
  32. If HSV(2) < Min_V Then
  33. Min_V = HSV(2)
  34. Else
  35. If HSV(2) > Max_V Then
  36. Max_V = HSV(2)
  37. End If
  38. End If
  39. Next
  40. Avg_H = Int((Min_H + Max_H) / 2)
  41. Avg_S = Int((Min_S + Max_S) / 2)
  42. Avg_V = Int((Min_V + Max_V) / 2)
  43. D_H = 取最大差值(Min_H, Max_H, Avg_H)
  44. D_S = 取最大差值(Min_S, Max_S, Avg_S)
  45. D_V = 取最大差值(Min_V, Max_V, Avg_V)
  46. 计算HSV偏色 = Avg_H & "." & Avg_S & "." & Avg_V & "-" & D_H & "." & D_S & "." & D_V
  47. End Function
  48. Function HSV拆分(HSV_Str)
  49. Dim ret
  50. ret = Split(HSV_Str, ".")
  51. HSV拆分 = Array(CInt(ret(0)), CInt(ret(1)), CInt(ret(2)))
  52. End Function
  53. Function 取最大差值(Min, Max, Avg)
  54. Dim 差值1, 差值2
  55. 差值1 = Abs(Min - Avg)
  56. 差值2 = Abs(Max - Avg)
  57. If 差值1 > 差值2 Then
  58. 取最大差值 = 差值1
  59. Else
  60. 取最大差值 = 差值2
  61. End If
  62. End Function
复制代码


调用示例:
TracePrint 计算HSV偏色("1.2.3|4.5.6")
TracePrint 计算HSV偏色("0.0.0|360.100.100")
调试结果:
2.3.4-2.2.2

180.50.50-180.50.50

近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

Thanks!Very Happy

3#

Thanks!Very Happy

4#

能看吗

5#

感谢分享嘻嘻嘻

6#

向大佬学习

7#

感谢分享

8#

看看

9#

学习一下

10#

学习使人进步。。

11#

感谢分享嘻嘻嘻

12#

11111111111111111

13#

学习一下

14#

学习到了,膜拜

15#

学习到了,膜拜

16#

谢谢分享

17#

1111111111

18#

学习了

19#


20#

学习学习

发新话题 回复该主题