跳至主要內容

圖中找色 (:find_color)

聲明

橫座標, 縱座標 = 圖片:find_color({
[find_all = 是否搜尋多個結果,]
[max_results = 最大結果數,]
[max_miss = 允許最多未命中數,]
[find_order = 找色順序,]
[csim_algorithm = 顏色相似度演算法,]
{起始點橫座標, 起始點縱座標, 起始點顏色[, 起始點相似度]},
{偏移點橫座標*, 偏移點縱座標*, 偏移點顏色*[, 偏移點相似度*]},
{偏移點橫座標*, 偏移點縱座標*, 偏移點顏色*[, 偏移點相似度*]},
...
} [, 全域相似度,,,,])

參數

  • 是否搜尋多個結果
    布林型,可選參數,這個標籤設定為 true 會返回範圍內所有匹配位置的一個表,格式為 {{x1, y1}, {x2, y2}, ...},預設 false

  • 最大結果數
    整數型,可選參數,當 find_all (是否搜尋多個結果) 標籤設定為 true 的時候,這個表示最多返回結果數,最多可以設為 1000,預設 100

  • 允許最多未命中數
    整數型,可選參數,可以允許最多的不匹配的點的數量,預設為 0,也就是全命中才算找到

  • 找色順序
    整數型,可選參數,代表找色順序,取值範圍 1~8,預設 1

    找色順序取值說明
    1 由上至下、由左至右
    2 由左至右、由上至下
    3 由右至左、由上至下
    4 由上至下、由右至左
    5 由下至上、由右至左
    6 由右至左、由下至上
    7 由左至右、由下至上
    8 由下至上、由左至右

    螢幕找色函式 screen.find_color 沒有這個字段
    找色順序演示

  • 顏色相似度演算法(自 20250302 版本起支援)
    整數型,可選參數,顏色相似度演算法,預設 0

    顏色相似度演算法
    0 為 XXT 預設演算法,梯度陡峭,差值使相似度下降很快
    1 為曼哈頓演算法,梯度平滑
    2 為歐幾里得演算法,梯度平滑
  • 起始點橫座標, 起始點縱座標
    整數型,代表起始座標,它並不是限制找色的範圍為固定這一點,而僅僅是給偏移位置一個相對座標。若不需要使用偏移,可填 0, 0

  • 起始點顏色
    整數型,代表需要搜尋的那一點的顏色

  • 起始點相似度
    整數型,可選參數,需要搜尋的那一點顏色的相似度,取值範圍 1~100,預設 100

  • 偏移點橫座標*, 偏移點縱座標*
    整數型,代表一個偏移位置座標

  • 偏移點顏色*
    整數型,代表偏移位置需要匹配的顏色

  • 偏移點相似度*
    整數型,可選參數,偏移位置的顏色的相似度,取值範圍 -100~100,預設 100,負相似度意味著匹配小於該絕對值的相似度

  • 全域相似度
    整數型,可選參數,如果沒有給單個點設定相似度,那麼每一點都會用這個相似度,取值範圍 1~100,預設 100

  • 左, 上, 右, 下
    整數型,可選參數,代表搜尋區域,預設 全圖

回傳值

  • 橫座標, 縱座標
    整數型,返回匹配色的第一個色的座標,搜尋失敗返回 -1, -1

說明

使用相似度模式查找,取得區域中第一個完全匹配的多點顏色結構的位置
偏色模式用法參考 多點色偏模式找色 (screen.find_color)

範例

img = screen.image()

x, y = img: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 = img: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
且…… (後面的同理) 都能匹配的那個點
--]]