Auto.js images.matchTemplate() 函數的特點
官方文檔:https://hyb1996.github.io/AutoJs-Docs/#/images?id=imagesmatchtemplateimg-template-options
images.matchTemplate(img, template, options)
[v4.1.0新增]
img
{Image} 大圖片template
{Image} 小圖片(模板)options
{Object} 找圖選項:threshold
{number} 圖片相似度。取值范圍為0~1的浮點數。默認值為0.9。region
{Array} 找圖區域。參見findColor函數關於region的說明。max
{number} 找圖結果最大數量,默認為5level
{number} 一般而言不必修改此參數。不加此參數時該參數會根據圖片大小自動調整。找圖算法是采用圖像金字塔進行的, level參數表示金字塔的層次, level越大可能帶來越高的找圖效率,但也可能造成找圖失敗(圖片因過度縮小而無法分辨)或返回錯誤位置。因此,除非您清楚該參數的意義並需要進行性能調優,否則不需要用到該參數。
- 返回 {MatchingResult}
在大圖片中搜索小圖片,並返回搜索結果MatchingResult。該函數可以用於找圖時找出多個位置,可以通過max參數控制最大的結果數量。也可以對匹配結果進行排序、求最值等操作。
找圖失敗的原因很可能是:從本地讀取的圖片文件路徑不對,圖片對象為undefined 或 null。
images.matchTemplate() 如果找圖失敗,會直接拋出空指針異常:
01:08:28.081/E: Wrapped java.lang.NullPointerException: template = null (file:///android_asset/modules/__images__.js#430)
Wrapped java.lang.NullPointerException: template = null
at file:///android_asset/modules/__images__.js:430:0
at /storage/emulated/0/腳本/有用的腳本/收取能量測試.js:6:0
結果是腳本直接在此處拋異常,並停止。
結論:
images.matchTemplate() 如果找圖失敗,並在images.matchTemplate()方法出停止運行腳本,找圖失敗多是因為圖片對象為undefined 或 null。
如果找圖成功,返回 {MatchingResult},{MatchingResult}可以是空集。當返回空集時,代表找不到圖片,找圖的算法是正常運行結束的,不是拋出異常結束腳本。