多點相似度模式找色 (screen.find_color)
聲明
橫座標, 縱座標 = screen.find_color({
[find_all = 是否搜尋多個結果,]
[max_results = 最大結果數,]
[max_miss = 允許最多未命中數,]
[csim_algorithm = 顏色相似度演算法,]
{起始點橫座標, 起始點縱座標, 起始點顏色[, 起始點相似度]},
{偏移點橫座標*, 偏移點縱座標*, 偏移點顏色*[, 偏移點相似度*]},
{偏移點橫座標*, 偏移點縱座標*, 偏移點顏色*[, 偏移點相似度*]},
...
} [, 全域相似度, 左, 上, 右, 下 ])
參數
-
是否搜尋多個結果
布林型,可選參數,這個標籤設定為 true 會返回範圍內所有匹配位置的一個表,格式為 {{x1, y1}, {x2, y2}, ...},預設 false -
最大結果數
整數型,可選參數,當 find_all (是否搜尋多個結果) 標籤設定為 true 的時候,這個表示最多返回結果數,最多可以設為 1000,預設 100 -
允許最多未命中數
整數型,可選參數,可以允許最多的不匹配的點的數量,預設為 0,也就是全命中才算找到 -
顏色相似度演算法 20250302
整數型,可選參數,顏色相似度演算法,預設 0顏色相似度演算法
0 為 XXT 預設演算法,梯度陡峭,差值使相似度下降很快
1 為曼哈頓演算法,梯度平滑
2 為歐幾里得演算法,梯度平滑 -
起始點橫座標, 起始點縱座標
整數型,代表起始座標,它並不是限制找色的範圍為固定這一點,而僅僅是給偏移位置一個相對座標。若不需要使用偏移,可填 0, 0 -
起始點顏色
整數型,代表需要搜尋的那一點的顏色 -
起始點相似度
整數型,可選參數,需要搜尋的那一點顏色的相似度,取值範圍 1~100,預設 100 -
偏移點橫座標*, 偏移點縱座標*
整數型,代表一個偏移位置座標 -
偏移點顏色*
整數型,代表偏移位置需要匹配的顏色 -
偏移點相似度*
整數型,可選參數,偏移位置的顏色的相似度,取值範圍 -100~100,預設 100,負相似度意味著匹配小於該絕對值的相似度 -
全域相似度
整數型,可選參數,如果沒有給單個點設定相似度,那麼每一點都會用這個相似度,取值範圍 1~100,預設 100 -
左, 上, 右, 下
整數型,可選參數,代表搜尋區域,預設 全屏
回傳值
- 橫座標, 縱座標
整數型,返回匹配色的第一個色的座標,搜尋失敗返回 -1, -1
說明
使用相似度模式查找,取得區域中第一個完全匹配的多點顏色結構的位置
目前函式座標值參數及回傳值均受screen.init函式初始化的座標系影響
範例
x, y = screen.find_color({
{ 0, 0, 0xec1c23},
{ 12, -3, 0xffffff, 85},
{ 5, -18, 0x00adee},
{ -1, -10, 0xffc823},
{ 2, -34, 0xa78217},
{ 12, -55, 0xd0d2d2},
}, 90, 0, 0, 100, 100)
--
--[[
在左上為 0, 0 右下為 100, 100 的區域找到第一點與 0xec1c23 相似度大於 90
且它的相對坐標 (12, -3) 的位置的顏色與 0xffffff 相似度大於 85
且它的相對坐標 (5, -18) 的位置的顏色與 0x00adee 相似度大於 90
且…… (後面的同理) 都能匹配的那個點
--]]
--
-- 等效代碼如下:
--
x, y = screen.find_color({
{ 509, 488, 0xec1c23},
{ 521, 485, 0xffffff, 85},
{ 514, 470, 0x00adee},
{ 508, 478, 0xffc823},
{ 511, 454, 0xa78217},
{ 521, 433, 0xd0d2d2},
}, 90, 0, 0, 100, 100)
--
--[[
在左上為 0, 0 右下為 100, 100 的區域找到第一點與 0xec1c23 相似度大於 90
且它的相對坐標 (521-509, 485-488) 的位置的顏色與 0xffffff 相似度大於 85
且它的相對坐標 (514-509, 470-488) 的位置的顏色與 0x00adee 相似度大於 90
且…… (後面的同理) 都能匹配的那個點
--]]
--
-- 不換行無縮進就是這個效果:
x, y = screen.find_color({ {0,0,0xec1c23},{12,-3,0xffffff,85},{5,-18,0x00adee},{-1,-10,0xffc823},{2,-34,0xa78217},{12,-55,0xd0d2d2},},90,0,0,100,100)
--
x, y = screen.find_color({ -- 反匹配演示,在 5C 主屏幕運行可獲得結果
{ 516, 288, 0xffffff },
{ 519, 286, 0xffffff },
{ 521, 289, 0xffffff },
{ 516, 296, 0xffffff },
{ 522, 297, 0xffffff },
{ 520, 295, 0xffffff, -10 }, -- 這一點顏色與 0xffffff 相似度小於 10 才匹配,下同
{ 515, 291, 0xffffff, -10 },
{ 518, 284, 0xffffff, -10 },
{ 523, 298, 0xffffff, -10 },
{ 514, 298, 0xffffff, -10 },
{ 514, 296, 0xffffff, -10 },
}, 90) -- 不寫區域參數表示全屏找
--
results = screen.find_color({ -- 範圍匹配全輸出演示
{ 527, 278, 0xde1d26 },
{ 524, 285, 0x007aff },
{ 555, 292, 0xe4ddc9 },
{ 536, 314, 0xffde02 },
{ 502, 291, 0xffde02 },
{ 502, 283, 0xe4ddc9 },
find_all = true, -- 帶這個標籤將返回範圍所有匹配的位置的一個表,格式為 { {x1, y1}, {x2, y2}, ...}
}, 90) -- 不寫區域參數表示全屏找