複数点類似度モードで色を検索 (screen.find_color)
宣言
横座標, 縦座標 = screen.find_color({
[find_all = 複数の結果を検索するか,]
[max_results = 最大結果数,]
[max_miss = 許容する未一致点の最大数,]
[csim_algorithm = 色類似度アルゴリズム,]
{開始点の横座標, 開始点の縦座標, 開始点の色[, 開始点の類似度]},
{オフセット点X座標*, オフセット点Y座標*, オフセット点の色*[, オフセット点の類似度*]},
{オフセット点X座標*, オフセット点Y座標*, オフセット点の色*[, オフセット点の類似度*]},
...
} [, 全体の類似度, 左端, 上端, 右端, 下端 ])
パラメータ
-
複数の結果を検索するか
ブール値。省略可能です。このラベルを 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) -- 領域パラメータを省略すると画面全体を検索します