| 
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                     
                                        
                                     
                                    
                                        
                                        - 博士后
 
                                        
                                        - 728264
 
                                        - 3503
 
                                        - 18
 
                                        - 1900 朵
 
                                        - 27455 个
 
                                        - 1719 个
 
                                        - 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
         
     
     
 
                    
                    
                    
                    
                    
                        
                        
                     
                     |