找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4426|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

按鍵精靈自定義公用函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:26188 發(fā)表于 2015-2-18 01:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
[General]
MacroID=56ea1fce-b961-4037-8ec0-751af08ee19b
SyntaxVersion=1
Description=公用函數(shù)
[Script]
//請在下面寫上您的子程序或函數(shù)
//寫完保存后,在任一命令庫上點擊右鍵并選擇“刷新”即可
Function RGB轉(zhuǎn)Y(顏色字符串)
Dim R : dim G : dim B
R=clng("&h"&mid(顏色字符串,1,2))
G=clng("&h"&mid(顏色字符串,3,2))
B=clng("&h"&mid(顏色字符串,5,2))
RGB轉(zhuǎn)Y = 0.29 * R + 0.6 * G + 0.11 * B
End function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function 找重復(fù)最多的值(數(shù)組字符串)
Dim 主數(shù)組 : Dim 主數(shù)組下標 : Dim 累加記數(shù)
Dim 重復(fù)數(shù)組字串 : Dim 重復(fù)數(shù)組 : Dim 重復(fù)數(shù)組下標 : Dim 重復(fù)標記 : Dim 重復(fù)數(shù) : Dim 重復(fù)次數(shù)
Dim i : Dim j : Dim k
主數(shù)組=split(數(shù)組字符串,"|")
主數(shù)組下標=(ubound(主數(shù)組))-1
重復(fù)數(shù)=0
重復(fù)次數(shù) =0
For i= 0 to 主數(shù)組下標-1
    累加記數(shù)=0
    重復(fù)數(shù)組=split(重復(fù)數(shù)組字串,"|")
    重復(fù)數(shù)組下標=(ubound(重復(fù)數(shù)組))-1
    For k= 0 to 重復(fù)數(shù)組下標
        if 主數(shù)組(i)=重復(fù)數(shù)組(k) then
            重復(fù)標記=1
        Else
            重復(fù)標記=0
        end if
    Next
    If 重復(fù)標記=0 then
        For j = i+1 to 主數(shù)組下標
            If 主數(shù)組(i)=主數(shù)組(j) then
                累加記數(shù)=累加記數(shù)+1
            End if
        Next
        If 累加記數(shù)>0 then
            重復(fù)數(shù)組字串=重復(fù)數(shù)組字串&cstr(主數(shù)組(i))&"|"
            If 累加記數(shù)>重復(fù)次數(shù) then
                重復(fù)數(shù) = 主數(shù)組(i)
                重復(fù)次數(shù) = 累加記數(shù)
            end if
        end if
    end if
Next
找重復(fù)最多的值 =重復(fù)數(shù)
end function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function 找多個相同圖形(被找圖像寬,被找圖像高,x起點,y起點,x終點,y終點,被找起點顏色,被找顏色偏移)
//下文是用來在限定四邊形范圍內(nèi)查找多個無跌加狀態(tài)正四邊形圖形的算法流程
Dim 相似度變量 : dim 相似度終值 : dim x起點變量 : dim y起點變量 : dim y終點變量
Dim temp0 : dim temp1 : dim x : dim y
相似度變量=.9 : 相似度終值 =.4 : x起點變量 = x起點 : y起點變量 = y起點 : y終點變量 = y終點 : 找多個相同圖形 = ""
While 相似度變量 > 相似度終值
    temp0=Plugin.Color.FindMutiColor(x起點變量,y起點變量,x終點, y終點變量,被找起點顏色,被找顏色偏移,相似度變量)
    temp1 = split(temp0,"|") : x = Clng(temp1(0)) : y = Clng(temp1(1))
    If x > 0 and y > 0 then
        x起點變量 = x + 被找圖像寬 : y起點變量 = y :  y終點變量 = y + 被找圖像高 : 找多個相同圖形 = 找多個相同圖形&x&","&y&"|"
        While x起點變量 < x終點 - 被找圖像寬 + 1 and y起點變量 < y終點 - 被找圖像高 + 1
            temp0=Plugin.Color.FindMutiColor(x起點變量,y起點變量,x終點, y終點變量,被找起點顏色,被找顏色偏移,相似度變量)
            temp1 = split(temp0,"|") : x=Clng(temp1(0)) : y=Clng(temp1(1))
            If x > 0 and y > 0 then
                x起點變量 = x + 被找圖像寬 : y起點變量 = y :  y終點變量= y + 被找圖像高 : 找多個相同圖形 = 找多個相同圖形&x&","&y&"|"
            Else
                If x起點變量 <> x起點
                    x起點變量 = x起點 : y起點變量 = y起點變量 + 1 : y終點變量 = y終點
                Else
                    x起點變量 = x起點 - 被找圖像寬 : y起點變量 = y終點 - 被找圖像高
                end if
            end if  
        wend
        相似度變量 = 相似度終值
    Else
        相似度變量 = 相似度變量 - .1
    end if
Wend
End function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function 區(qū)域內(nèi)找顏色突出的值(x軸起點,y軸起點,x軸終點,y軸終點)
Dim 背景色 : Dim 紅值 : Dim 藍值 : Dim 黃值 : Dim 背景亮度
Dim 采樣色 : Dim 采樣大小: Dim 采樣亮度 : Dim 域值測試 : Dim 域值 : Dim 顏色數(shù)組集
Dim i : Dim x : Dim y : Dim 步進
背景色 = array("","","","") : 紅值 = 0 : 藍值 = 0 : 黃值 = 0
采樣大小 = 32 : 域值 = 33
//取四個角的色值,作為判斷排除的依據(jù)
背景色(0)=GetPixelColor(x軸起點,y軸起點) : 背景色(1)=GetPixelColor(x軸終點,y軸起點)
背景色(2)=GetPixelColor(x軸起點,y軸終點) : 背景色(3)=GetPixelColor(x軸終點,y軸終點)
For i = 0 TO 3
   紅值 = 紅值 + clng("&H"&(mid(背景色(i),1,2)))
   藍值 = 藍值 + clng("&H"&(mid(背景色(i),3,2)))
   黃值 = 黃值 + clng("&H"&(mid(背景色(i),5,2)))   
Next
紅值 = 紅值\4 : 藍值 = 藍值\4 : 黃值 = 黃值\4
背景亮度 = (0.29 * 紅值 + 0.6 * 藍值 + 0.11 * 黃值)\1
//采樣
If (x軸終點-x軸起點) > (y軸終點-y軸起點) then
    步進 = (x軸終點-x軸起點)\32
Else
    步進 = (y軸終點-y軸起點)\32
end if
For y = y軸起點 to y軸終點 step 步進
    For x = x軸起點 to x軸終點 step 步進
        采樣色=GetPixelColor(x,y)
        采樣亮度 = lib.公用函數(shù).RGB轉(zhuǎn)Y(Cstr(采樣色))
        域值測試 = (((abs(采樣亮度-背景亮度))/255)*100)\1
        If 域值測試>域值 then
            顏色數(shù)組集 = 顏色數(shù)組集&cstr(采樣色)&"|"
        end if
    Next
Next
區(qū)域內(nèi)找顏色突出的值 = 顏色數(shù)組集
End function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function 查找包絡(luò)(x軸起點,y軸起點,x軸終點,y軸終點,顏色)
//2010/05/06 tankli88 zt_script,sub 包絡(luò)范圍 
//在勻色背景中,查找顏色突出區(qū)域的包絡(luò)范圍
//調(diào)用插件從左向右,從上向下查找,查找相似度域值,得到包絡(luò)范圍的最小Y坐標.第一次查找,x起點變量為包絡(luò)范圍的最小X坐標,第二次x起點變量為包絡(luò)范圍的最大X坐標,第三次y起點變量為包絡(luò)范圍的最大Y坐標
//查找方式,二分收斂
dim 判斷條件 : dim 相似度變量 : dim x :dim y : dim x變量
Dim x起點變量 : dim x終點變量 : dim y起點變量 : dim y終點變量
Dim x起點常量 : dim x終點常量 : dim y起點常量 : dim y終點常量
判斷條件 = 1 : 相似度變量 = .9
While 判斷條件 <> 0
    FindColorEx x軸起點,y軸起點,x軸終點,y軸終點,顏色,0,相似度變量,x,y
    If x > 0 and y > 0
        判斷條件 = 0
        ///////////////
        x變量 = x : y起點常量 = y : x起點變量 = x軸起點 : x終點變量 = x起點變量 + (x - x起點變量)\2 :
        While (x變量-x起點變量) > 1
            FindColorEx x起點變量,y起點常量,x終點變量,y軸終點,顏色,0,相似度變量,x,y
            If x > 0 and y > 0
                x變量 = x : x終點變量 = x起點變量 + (x - x起點變量)\2
            Else
                x起點變量 = x終點變量 : x終點變量 = x起點變量 + (x變量 - x起點變量)\2
            End If
        wend
        ///////////////
        x起點常量 = x起點變量 + 1 :  x終點變量 = x軸終點 : x起點變量 = x起點常量 + (x終點變量 - x起點常量)\2
        While (x終點變量-x起點變量) > 1
            FindColorEx x起點變量,y起點常量,x終點變量,y軸終點,顏色,0,相似度變量,x,y
            If x > 0 and y > 0
                x起點變量 = x + (x終點變量 - x)\2
            Else
                x終點變量 = x起點變量 : x起點變量 = x終點變量 - (x終點變量 - x起點常量)\2
            End If
        wend
        ///////////////
        x終點常量 = x起點變量 + 1 : y終點變量 = y軸終點 : y起點變量 = y起點常量 + (y終點變量 - y起點常量)\2
        While (y終點變量-y起點變量) > 1
            FindColorEx x起點常量,y起點變量,x終點常量,y終點變量,顏色,0,相似度變量,x,y
            If x > 0 and y > 0
                y起點變量 = y + (y終點變量 - y)\2
            Else
                y終點變量 = y起點變量 : y起點變量 = y終點變量 - (y終點變量 - y起點常量)\2
            End If
        wend
        y終點常量 = y起點變量 + 1
    else
        相似度變量 = 相似度變量 - .1
    End if
wend
查找包絡(luò) = cstr(x起點常量)&"|"&cstr(y起點常量)&"|"&cstr(x終點常量)&"|"&cstr(y終點常量)
End Function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function 自動查找包絡(luò)(x軸起點,y軸起點,x軸終點,y軸終點)
Dim 顏色數(shù)組字符串: dim 顏色
顏色數(shù)組字符串 = lib.公用函數(shù).區(qū)域內(nèi)找顏色突出的值(x軸起點,y軸起點,x軸終點,y軸終點)
顏色 = lib.公用函數(shù).找重復(fù)最多的值(顏色數(shù)組字符串)
自動查找包絡(luò) = lib.公用函數(shù).查找包絡(luò)(x軸起點,y軸起點,x軸終點,y軸終點,顏色)
End function

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表