|
[General]
MacroID=56ea1fce-b961-4037-8ec0-751af08ee19b
SyntaxVersion=1
Description=公用函數(shù)
[Script]
//請(qǐng)?jiān)谙旅鎸懮夏淖映绦蚧蚝瘮?shù)
//寫完保存后,在任一命令庫上點(diǎn)擊右鍵并選擇“刷新”即可
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ù)組下標(biāo) : Dim 累加記數(shù)
Dim 重復(fù)數(shù)組字串 : Dim 重復(fù)數(shù)組 : Dim 重復(fù)數(shù)組下標(biāo) : Dim 重復(fù)標(biāo)記 : Dim 重復(fù)數(shù) : Dim 重復(fù)次數(shù)
Dim i : Dim j : Dim k
主數(shù)組=split(數(shù)組字符串,"|")
主數(shù)組下標(biāo)=(ubound(主數(shù)組))-1
重復(fù)數(shù)=0
重復(fù)次數(shù) =0
For i= 0 to 主數(shù)組下標(biāo)-1
累加記數(shù)=0
重復(fù)數(shù)組=split(重復(fù)數(shù)組字串,"|")
重復(fù)數(shù)組下標(biāo)=(ubound(重復(fù)數(shù)組))-1
For k= 0 to 重復(fù)數(shù)組下標(biāo)
if 主數(shù)組(i)=重復(fù)數(shù)組(k) then
重復(fù)標(biāo)記=1
Else
重復(fù)標(biāo)記=0
end if
Next
If 重復(fù)標(biāo)記=0 then
For j = i+1 to 主數(shù)組下標(biāo)
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 找多個(gè)相同圖形(被找圖像寬,被找圖像高,x起點(diǎn),y起點(diǎn),x終點(diǎn),y終點(diǎn),被找起點(diǎn)顏色,被找顏色偏移)
//下文是用來在限定四邊形范圍內(nèi)查找多個(gè)無跌加狀態(tài)正四邊形圖形的算法流程
Dim 相似度變量 : dim 相似度終值 : dim x起點(diǎn)變量 : dim y起點(diǎn)變量 : dim y終點(diǎn)變量
Dim temp0 : dim temp1 : dim x : dim y
相似度變量=.9 : 相似度終值 =.4 : x起點(diǎn)變量 = x起點(diǎn) : y起點(diǎn)變量 = y起點(diǎn) : y終點(diǎn)變量 = y終點(diǎn) : 找多個(gè)相同圖形 = ""
While 相似度變量 > 相似度終值
temp0=Plugin.Color.FindMutiColor(x起點(diǎn)變量,y起點(diǎn)變量,x終點(diǎn), y終點(diǎn)變量,被找起點(diǎn)顏色,被找顏色偏移,相似度變量)
temp1 = split(temp0,"|") : x = Clng(temp1(0)) : y = Clng(temp1(1))
If x > 0 and y > 0 then
x起點(diǎn)變量 = x + 被找圖像寬 : y起點(diǎn)變量 = y : y終點(diǎn)變量 = y + 被找圖像高 : 找多個(gè)相同圖形 = 找多個(gè)相同圖形&x&","&y&"|"
While x起點(diǎn)變量 < x終點(diǎn) - 被找圖像寬 + 1 and y起點(diǎn)變量 < y終點(diǎn) - 被找圖像高 + 1
temp0=Plugin.Color.FindMutiColor(x起點(diǎn)變量,y起點(diǎn)變量,x終點(diǎn), y終點(diǎn)變量,被找起點(diǎn)顏色,被找顏色偏移,相似度變量)
temp1 = split(temp0,"|") : x=Clng(temp1(0)) : y=Clng(temp1(1))
If x > 0 and y > 0 then
x起點(diǎn)變量 = x + 被找圖像寬 : y起點(diǎn)變量 = y : y終點(diǎn)變量= y + 被找圖像高 : 找多個(gè)相同圖形 = 找多個(gè)相同圖形&x&","&y&"|"
Else
If x起點(diǎn)變量 <> x起點(diǎn)
x起點(diǎn)變量 = x起點(diǎn) : y起點(diǎn)變量 = y起點(diǎn)變量 + 1 : y終點(diǎn)變量 = y終點(diǎn)
Else
x起點(diǎn)變量 = x起點(diǎn) - 被找圖像寬 : y起點(diǎn)變量 = y終點(diǎn) - 被找圖像高
end if
end if
wend
相似度變量 = 相似度終值
Else
相似度變量 = 相似度變量 - .1
end if
Wend
End function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function 區(qū)域內(nèi)找顏色突出的值(x軸起點(diǎn),y軸起點(diǎn),x軸終點(diǎn),y軸終點(diǎn))
Dim 背景色 : Dim 紅值 : Dim 藍(lán)值 : Dim 黃值 : Dim 背景亮度
Dim 采樣色 : Dim 采樣大小: Dim 采樣亮度 : Dim 域值測試 : Dim 域值 : Dim 顏色數(shù)組集
Dim i : Dim x : Dim y : Dim 步進(jìn)
背景色 = array("","","","") : 紅值 = 0 : 藍(lán)值 = 0 : 黃值 = 0
采樣大小 = 32 : 域值 = 33
//取四個(gè)角的色值,作為判斷排除的依據(jù)
背景色(0)=GetPixelColor(x軸起點(diǎn),y軸起點(diǎn)) : 背景色(1)=GetPixelColor(x軸終點(diǎn),y軸起點(diǎn))
背景色(2)=GetPixelColor(x軸起點(diǎn),y軸終點(diǎn)) : 背景色(3)=GetPixelColor(x軸終點(diǎn),y軸終點(diǎn))
For i = 0 TO 3
紅值 = 紅值 + clng("&H"&(mid(背景色(i),1,2)))
藍(lán)值 = 藍(lán)值 + clng("&H"&(mid(背景色(i),3,2)))
黃值 = 黃值 + clng("&H"&(mid(背景色(i),5,2)))
Next
紅值 = 紅值\4 : 藍(lán)值 = 藍(lán)值\4 : 黃值 = 黃值\4
背景亮度 = (0.29 * 紅值 + 0.6 * 藍(lán)值 + 0.11 * 黃值)\1
//采樣
If (x軸終點(diǎn)-x軸起點(diǎn)) > (y軸終點(diǎn)-y軸起點(diǎn)) then
步進(jìn) = (x軸終點(diǎn)-x軸起點(diǎn))\32
Else
步進(jìn) = (y軸終點(diǎn)-y軸起點(diǎn))\32
end if
For y = y軸起點(diǎn) to y軸終點(diǎn) step 步進(jìn)
For x = x軸起點(diǎn) to x軸終點(diǎn) step 步進(jìn)
采樣色=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軸起點(diǎn),y軸起點(diǎn),x軸終點(diǎn),y軸終點(diǎn),顏色)
//2010/05/06 tankli88 zt_script,sub 包絡(luò)范圍
//在勻色背景中,查找顏色突出區(qū)域的包絡(luò)范圍
//調(diào)用插件從左向右,從上向下查找,查找相似度域值,得到包絡(luò)范圍的最小Y坐標(biāo).第一次查找,x起點(diǎn)變量為包絡(luò)范圍的最小X坐標(biāo),第二次x起點(diǎn)變量為包絡(luò)范圍的最大X坐標(biāo),第三次y起點(diǎn)變量為包絡(luò)范圍的最大Y坐標(biāo)
//查找方式,二分收斂
dim 判斷條件 : dim 相似度變量 : dim x :dim y : dim x變量
Dim x起點(diǎn)變量 : dim x終點(diǎn)變量 : dim y起點(diǎn)變量 : dim y終點(diǎn)變量
Dim x起點(diǎn)常量 : dim x終點(diǎn)常量 : dim y起點(diǎn)常量 : dim y終點(diǎn)常量
判斷條件 = 1 : 相似度變量 = .9
While 判斷條件 <> 0
FindColorEx x軸起點(diǎn),y軸起點(diǎn),x軸終點(diǎn),y軸終點(diǎn),顏色,0,相似度變量,x,y
If x > 0 and y > 0
判斷條件 = 0
///////////////
x變量 = x : y起點(diǎn)常量 = y : x起點(diǎn)變量 = x軸起點(diǎn) : x終點(diǎn)變量 = x起點(diǎn)變量 + (x - x起點(diǎn)變量)\2 :
While (x變量-x起點(diǎn)變量) > 1
FindColorEx x起點(diǎn)變量,y起點(diǎn)常量,x終點(diǎn)變量,y軸終點(diǎn),顏色,0,相似度變量,x,y
If x > 0 and y > 0
x變量 = x : x終點(diǎn)變量 = x起點(diǎn)變量 + (x - x起點(diǎn)變量)\2
Else
x起點(diǎn)變量 = x終點(diǎn)變量 : x終點(diǎn)變量 = x起點(diǎn)變量 + (x變量 - x起點(diǎn)變量)\2
End If
wend
///////////////
x起點(diǎn)常量 = x起點(diǎn)變量 + 1 : x終點(diǎn)變量 = x軸終點(diǎn) : x起點(diǎn)變量 = x起點(diǎn)常量 + (x終點(diǎn)變量 - x起點(diǎn)常量)\2
While (x終點(diǎn)變量-x起點(diǎn)變量) > 1
FindColorEx x起點(diǎn)變量,y起點(diǎn)常量,x終點(diǎn)變量,y軸終點(diǎn),顏色,0,相似度變量,x,y
If x > 0 and y > 0
x起點(diǎn)變量 = x + (x終點(diǎn)變量 - x)\2
Else
x終點(diǎn)變量 = x起點(diǎn)變量 : x起點(diǎn)變量 = x終點(diǎn)變量 - (x終點(diǎn)變量 - x起點(diǎn)常量)\2
End If
wend
///////////////
x終點(diǎn)常量 = x起點(diǎn)變量 + 1 : y終點(diǎn)變量 = y軸終點(diǎn) : y起點(diǎn)變量 = y起點(diǎn)常量 + (y終點(diǎn)變量 - y起點(diǎn)常量)\2
While (y終點(diǎn)變量-y起點(diǎn)變量) > 1
FindColorEx x起點(diǎn)常量,y起點(diǎn)變量,x終點(diǎn)常量,y終點(diǎn)變量,顏色,0,相似度變量,x,y
If x > 0 and y > 0
y起點(diǎn)變量 = y + (y終點(diǎn)變量 - y)\2
Else
y終點(diǎn)變量 = y起點(diǎn)變量 : y起點(diǎn)變量 = y終點(diǎn)變量 - (y終點(diǎn)變量 - y起點(diǎn)常量)\2
End If
wend
y終點(diǎn)常量 = y起點(diǎn)變量 + 1
else
相似度變量 = 相似度變量 - .1
End if
wend
查找包絡(luò) = cstr(x起點(diǎn)常量)&"|"&cstr(y起點(diǎn)常量)&"|"&cstr(x終點(diǎn)常量)&"|"&cstr(y終點(diǎn)常量)
End Function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function 自動(dòng)查找包絡(luò)(x軸起點(diǎn),y軸起點(diǎn),x軸終點(diǎn),y軸終點(diǎn))
Dim 顏色數(shù)組字符串: dim 顏色
顏色數(shù)組字符串 = lib.公用函數(shù).區(qū)域內(nèi)找顏色突出的值(x軸起點(diǎn),y軸起點(diǎn),x軸終點(diǎn),y軸終點(diǎn))
顏色 = lib.公用函數(shù).找重復(fù)最多的值(顏色數(shù)組字符串)
自動(dòng)查找包絡(luò) = lib.公用函數(shù).查找包絡(luò)(x軸起點(diǎn),y軸起點(diǎn),x軸終點(diǎn),y軸終點(diǎn),顏色)
End function
|
|