模糊判断颜色的函数?
在帮助里找了半天只找到PixelGetColor ( x , y )这个颜色判断函数想要个模糊判断颜色的函数不知道用那个请高手告知 谢谢 本帖最后由 tryhi 于 2011-5-24 23:02 编辑
分解出红绿蓝三色进行加减模糊判断
续:--------------------------------------
帮你写个函数吧,不知你是不是这个意思 本帖最后由 tryhi 于 2011-5-24 23:11 编辑
回复 1# eett01 $color = PixelGetColor(100,100)
If color_mohu($color,0x123456,20) Then
MsgBox(0,0,"颜色与0x123456很接近,前后两个20个颜色范围")
Else
MsgBox(0,0,"颜色不接近")
EndIf
Func color_mohu($color, $dui_bi_color,$zhi)
$red = BitAND(BitShift($color, 16), 0xFF)
$green = BitAND(BitShift($color, 8), 0xFF)
$blue = BitAND($color, 0xFF)
$redb = BitAND(BitShift($dui_bi_color, 16), 0xFF)
$greenb = BitAND(BitShift($dui_bi_color, 8), 0xFF)
$blueb = BitAND($dui_bi_color, 0xFF)
If ($red > $redb - $zhi) And ($red < $redb+ $zhi) _
And ($green > $greenb - $zhi) And ($green < $greenb + $zhi) _
And ($blue > $blueb - $zhi) And ($blue < $blueb + $zhi) _
Then
Return True
EndIf
Return False
EndFunc ;==>color_mohu
另外说一下,分解红绿蓝有UDF函数,比如说_ColorGetBlue
另外,我的签名怎么不见了 谢谢 楼上大大 就是要这个了 呵呵 本帖最后由 eett01 于 2011-5-25 02:30 编辑
在补充个问题如果我用RGB色比较(不是用0x123456)这个函数需要怎么写呢?
如:
If color_mohu(x,y,30,30,30,20) Then
MsgBox(x,y,"颜色与30,30,30这个颜色很接近,红绿蓝3个色都分别在20个颜色范围内")
Else
MsgBox(x,y,"颜色不接近")
EndIf 本帖最后由 tryhi 于 2011-5-25 15:07 编辑
在补充个问题如果我用RGB色比较(不是用0x123456)这个函数需要怎么写呢?
如:
If color_mohu(x,y,30,30 ...
eett01 发表于 2011-5-25 02:29 http://www.autoitx.com/images/common/back.gif
举一反三很重要,理解很重要
$color = PixelGetColor(100,100)
If color_mohu($color,30,30,30,20) Then
MsgBox( 0,0,"颜色与30,30,30这个颜色很接近,红绿蓝3个色都分别在20个颜色范围内")
Else
MsgBox(0,0,"颜色不接近")
EndIf
Func color_mohu($$dui_bi_color, $red,$green,$blue,$zhi)
;~ $red = BitAND(BitShift($color, 16), 0xFF)
;~ $green = BitAND(BitShift($color, 8), 0xFF)
;~ $blue = BitAND($color, 0xFF)
$redb = BitAND(BitShift($dui_bi_color, 16), 0xFF)
$greenb = BitAND(BitShift($dui_bi_color, 8), 0xFF)
$blueb = BitAND($dui_bi_color, 0xFF)
If ($red > $redb - $zhi) And ($red < $redb+ $zhi) _
And ($green > $greenb - $zhi) And ($green < $greenb + $zhi) _
And ($blue > $blueb - $zhi) And ($blue < $blueb + $zhi) _
Then
Return True
EndIf
Return False
EndFunc ;==>color_mohu 嘿嘿 谢谢 复制下来慢慢学习 测试修改了下 这样就可以正常运行了 嘿嘿 $color = PixelGetColor(100,100)
If color_mohu($color,30,30,30,20) Then
MsgBox( 0,0,"颜色与30,30,30这个颜色很接近,红绿蓝3个色都分别在20个颜色范围内")
Else
MsgBox(0,0,"颜色不接近")
EndIf
Func color_mohu($color, $red,$green,$blue,$zhi)
$redb = BitAND(BitShift($color, 16), 0xFF)
$greenb = BitAND(BitShift($color, 8), 0xFF)
$blueb = BitAND($color, 0xFF)
If ($red > $redb - $zhi) And ($red < $redb+ $zhi) _
And ($green > $greenb - $zhi) And ($green < $greenb + $zhi) _
And ($blue > $blueb - $zhi) And ($blue < $blueb + $zhi) _
Then
Return True
EndIf
Return False
EndFunc ;==>color_mohu 不错呀看看 不错呀看看 学习了..顶一个 这个真好~~~ 我用了不怎么好用呀
页:
[1]