遊戲中的文字如果是單色字,利用大漠工具做一個字庫來找字,可以很容易的識別到。但是,如果這個字是漸變色的呢?或者說是有些透明的字體,字體顏色會隨著背景色進行輕微變化的?
工具/原料
按鍵精靈2014
方法/步驟
上圖中的465的字樣就是漸變顏色
我們一起來了解下,大漠工具是如何通過偏色來找漸變色文字的。
首先,我們瞭解下大漠找字的大致步驟:
1、抓取文字圖片,抓取文字裡的一個顏色點,設置偏色(如果是單色字則不需設置偏色)
2、偏色設置好之後,我們得到了清晰的二值化文字,這時候提取文字點陣,做成字庫。
3、加載字庫,開始找字。
然後,我們瞭解下大漠工具要如何使用:
大漠工具的使用
1、點擊抓圖,抓取我們需要的文字圖片。
2、設置文字顏色和偏色。
*RGB顏色值是由R(紅)、G(綠)、B(藍)三種顏色組成的。每種顏色由2位十六進制值來表示。
例如:“FFFFFF” 白色,FF(紅) FF(綠) FF (藍),換算成十進制就是: 255,255,255 當RGB三種顏色都是最大值255的時候,就是白色。
*偏色就是設置一個顏色的容差範圍,偏色的顏色值是由R(紅)、G(綠)、B(藍)三種顏色組成的。每種顏色由2位十六進制值來表示。
例如,我想找一個顏色,想找與它相近的顏色,顏色容差範圍30個顏色值
首先,我們要把容差範圍值轉換為十六進制的。
30的十六進制是1e,那我們偏色值就填寫 “1e1e1e”,RGB三種顏色各偏色1e
怎樣才能知道它的偏色值是多少呢?
例如:我們獲取的文字圖片裡,最淡的顏色點A的值是1,最深的顏色點B的值是10,我們當前抓取了一個顏色點C的值是2,那我們就要在文字圖片裡找比點c深的值,直到找到文字圖片裡最深的那個顏色點B,點B與點c的差值就是點c的偏色。
這樣找好麻煩有沒有,找到猴年馬月啊~~
所以,我們要善用工具,這裡介紹一款十分好用的偏色計算器工具——大漠偏色計算器。 剛剛好和大漠工具配成一套使用。
拓展知識:為什麼說配成一套使用的時候,小編用了竊喜的語氣呢? 是這樣的,並不是所有的偏色計算工具都是RGB格式的,例如大兵的偏色計算工具就是BGR的,如果是BGR格式獲取到的偏色:041e06, 我們要把R和B的位置調換變成RGB格式,就是:061e04,雖然只是調換個位置,但是有的時候忘記了就麻煩了。
大漠偏色計算器的使用
1、我們把抓到的圖打開,點擊文字取一個顏色點
2、點擊“根據顏色列表第一個和RGB顏色偏差添加顏色到顏色列表”,點擊之後大漠偏色計算器會把顏色相差的點都列出來。
3、點擊“計算最佳偏色並複製” ,點擊之後大漠偏色計算器會找出顏色列表中最深的顏色,並且和第一個我們獲取到的點進行差值計算。
4、點擊“生成色彩範圍並複製到剪貼板”,會獲取到偏色信息:A6691A-474D12
注意:獲取到的偏色,我們可以適當的加大一點點,防止個別電腦顏色顯示差異導致無法識別到。
生成字庫:
首先,我們把用大漠偏色計算器獲取到的值先填到大漠工具裡,A6691A-474D12,RGB=A6691A 偏色=474D12
然後,我們開始做字庫:
1、抓取點陣。
2、輸入定義文字。(這裡的定義文字可以隨意設置,例如,剛剛例子裡提取的465點陣,我們可以命名為678,這個是不影響的,這裡的定義文字只是為了區分字庫裡的點陣。)
3、回車,把點陣加入到字庫裡。
字庫添加完成。
字庫做好之後,我們把字庫文件放到方便調用的地方,如果製作出的腳本是要提供給其他人使用,請把字庫文件添加到按鍵精靈附件中。
偏色找到了,字庫也做好了,我們現在來實現下找字,找到之後點擊它。
代碼:
Call register()
PutAttachment "G:\test", "dm_soft.txt" //釋放字庫文件到G:\test文件夾裡
dm_ret = dm.SetDict(0, "G:\test\dm_soft.txt") //\加載字庫文件
dm_ret = dm.FindStr(0,0,2000,2000,"465","A6691A-474D12",1.0,intX,intY) //找字 。 參數裡的"465",填寫大漠綜合工具中做字庫時的 定義文字的內容
If intX >= 0 and intY >= 0 Then
MessageBox "找到了,位置:"&intX&","&intY
End If
Sub register() //註冊大漠
Set ws = createobject("Wscript.Shell")
ws.run "regsvr32 atl.dll /s"
Set ws = nothing
PutAttachment "G:\test", "dm.dll"
PutAttachment ".\Plugin" ,"RegDll.dll"
call Plugin.RegDll.Reg ( "G:\test\dm.dll")
Set dm = createobject("dm.dmsoft")
ver = dm.ver()
If len(ver) = 0 Then
MessageBox "插件註冊失敗,檢查系統是否禁用了vbs腳本權限"
EndScript
End If
End Sub
運行結果:
略帶透明的字體,設置偏色的方式也是和漸變色一樣的。如果字體的透明度比較高,偏色無法設置的,建議可以找找遊戲上其他特徵,例如,字的位置是不是變化的,字的附近有沒有其它的固定的東西。可以藉助這些特徵去找字。