여러 지점 유사도 방식으로 색상 찾기 (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) -- 영역 매개변수를 생략하면 전체 화면에서 찾습니다.