eett01 发表于 2011-5-24 22:11:39

模糊判断颜色的函数?

在帮助里找了半天只找到PixelGetColor ( x , y )这个颜色判断函数
想要个模糊判断颜色的函数不知道用那个请高手告知 谢谢

tryhi 发表于 2011-5-24 22:50:24

本帖最后由 tryhi 于 2011-5-24 23:02 编辑

分解出红绿蓝三色进行加减模糊判断


续:--------------------------------------
帮你写个函数吧,不知你是不是这个意思

tryhi 发表于 2011-5-24 22:59:50

本帖最后由 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:14:32

谢谢 楼上大大 就是要这个了 呵呵

eett01 发表于 2011-5-25 02:29:03

本帖最后由 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 08:28:00

本帖最后由 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

eett01 发表于 2011-5-25 13:14:47

嘿嘿 谢谢 复制下来慢慢学习

eett01 发表于 2011-5-25 14:15:57

测试修改了下 这样就可以正常运行了 嘿嘿        $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

joyue9 发表于 2011-6-18 17:12:31

不错呀看看

joyue9 发表于 2011-6-18 17:12:35

不错呀看看

joyue9 发表于 2011-6-18 21:55:04

学习了..顶一个

yorker0503 发表于 2011-6-19 14:44:07

这个真好~~~

yjw83523 发表于 2011-6-20 08:58:43

我用了不怎么好用呀
页: [1]
查看完整版本: 模糊判断颜色的函数?