- 按键认证大神
- 728264
- 3501
- 18
- 1898 朵
- 27453 个
- 1717 个
- 82980
- 2011-08-04
|
1#
t
T
发表于 2022-03-10 23:06
|
|只看楼主
写在前面: 论坛恢复有一段时间了,从最早不知道如何发帖,到后来不知道写点什么,一直没有发帖。今天刚好碰到需要判断颜色和获取颜色数量,由于一直都是用大漠插件,就翻阅了一下大漠的文档。但是结果却是“CmpColor”和“GetColorNum”这两个函数均不支持HSV颜色,只支持RGB。苦于无奈,索性自己写一个,顺便分享给大家。由于按键精灵运行效率堪忧,实际使用起来可能会比较慢,重在分享思路,与大家一同学习。构思匆忙,若有更好的写法或发现函数写法不正确,欢迎跟帖提供意见和建议。函数名:GetColorNum_HSV 获取指定区域的颜色数量(HSV)参数定义: x1 整数型:区域的左上X坐标 y1 整数型:区域的左上Y坐标 x2 整数型:区域的右下X坐标 y2 整数型:区域的右下Y坐标 color_ 字符串型:仅支持HSV颜色和偏色,比如"340.45.65-20.15.15|10.45.65-10.15.15" sim 浮点型:相似度(0.1~1.0)返回值: 整数型:返回颜色数量,未找到则返回0。 - Function GetColorNum_HSV(x1, y1, x2, y2, color_, sim)
- y2 = y2 - 1
- Dim num
- num = 0
- Dim x, y
- For x = x1 To x2
- For y = y1 To y2
- If CmpColor_HSV(x, y, color_, sim) = 0 Then
- num = num + 1
- End If
- Next
- Next
- GetColorNum_HSV = num
- End Function
复制代码 函数名: CmpColor_HSV 比较指定坐标点(x,y)的颜色(HSV)参数定义:x 整数型:X坐标y 整数型:Y坐标color_ 字符串型:仅支持HSV颜色和偏色,比如"340.45.65-20.15.15|10.45.65-10.15.15"sim 浮点型:相似度(0.1~1.0)
返回值: 整数型:返回0为颜色匹配,1为颜色不匹配。 - Function CmpColor_HSV(x, y, color_, sim)
- If sim < 0.1 Then
- sim = 0.1
- Else
- If sim > 1.0 Then
- sim = 1.0
- End If
- End If
- CmpColor_HSV = 1
- Dim HSV组合,HSV, H, S, V, HSV偏, H偏, S偏, V偏
- Dim U_color_,i
- color_ = Split(color_, "|")
- U_color_ = UBound(color_)
- Dim 指定点HSV, 指定点H, 指定点S, 指定点V
- 指定点HSV = Split(dm.GetColorHSV(x, y), ".")
- 指定点H = CDbl(指定点HSV(0))
- 指定点S = CDbl(指定点HSV(1))
- 指定点V = CDbl(指定点HSV(2))
- For i = 0 To U_color_
- HSV组合 = Split(color_(i), "-")
- HSV = Split(HSV组合(0), ".")
- HSV偏 = Split(HSV组合(1), ".")
- H = CDbl(HSV(0))
- S = CDbl(HSV(1))
- V = CDbl(HSV(2))
- H偏 = CDbl(HSV偏(0)) / sim
- S偏 = CDbl(HSV偏(1)) / sim
- V偏 = CDbl(HSV偏(2)) / sim
- If Abs(指定点H - H) <= H偏 And Abs(指定点S - S) <= S偏 And Abs(指定点V - V) <= V偏 Then
- CmpColor_HSV = 0
- Exit Function
- End If
- Next
- End Function
复制代码
点评
瑞祥幽冥狼
欢迎归来
发表于 2022/3/11 0:37:29
|