컴퓨터 프로그래밍/Autohotkey

#8 오토핫키 ImageSearch / 오토핫키 이미지 서치 / 이미지 찾기, 이미지 오차 범위, 지정한 색깔 제외하고 찾기(trans)

나노콛 2019. 8. 18. 23:11

ImageSearch 이미지 서치

 

ImageSearch, 찾은 이미지 X위치 담을 변수, 찾은 이미지 Y위치 담을 변수, 검색 범위 시작 x좌표, 검색 범위 시작 y좌표, 검색 범위 끝 x좌표, 검색 범위 끝 y좌표, 찾을 이미지 파일

 

"이것과 같은 이미지 좀 찾아주세요"

이제 본격적인 재미를 볼 시간입니다.
이미지 서치는 아주 방대하게 많이 사용하죠

이미지 서치에 들어가는 인수에 대해서 설명을 먼저 드리겠습니다.

일단 첫째로 찾을 이미지 파일입니다.
가장 마지막 인수로 들어가는데요
화면에서 찾을 이미지를 먼저 만들어 놔야겠죠?

거의 모든 이미지 확장자를 지원하는데요
GIF/JPG/BMP/ICO/CUR/ANI/EXE/DLL/PNG/TIF/Exif/WMF/EMF입니다.
exe와 dll 같은 경우는 이미지 파일은 아니지만 아이콘의 이미지를 읽습니다.

여기서 많지만 한 가지만 봅시다 BMP입니다.
BMP 파일 이외에는 색 오차로 바르게 서치 되지 않을 수 있다고 합니다.
그러니 이미지 서치 할 때에는 BMP 파일만 이용하도록 합시다.


찾은 이미지 X위치 담을 변수, 찾은 이미지 Y위치 담을 변수

이미지를 찾게 되면 그 해당 이미지의 좌상의 마우스 좌표 위치가 변수에 저장이 됩니다.
이 인수는 생략이 가능하고 생략하면 좌표는 저장이 되지 않겠죠


검색 범위 시작 x좌표, 검색 범위 시작 y좌표


이 인수는 검색을 시작할 범위 (좌상)의 좌표를 쓰는 곳입니다.


검색 범위 끝
 x좌표, 검색 범위 끝 y좌표

검색을 시작할 범위의 끝(우하)의 좌표를 쓰는 곳입니다.

 

imagesearch, VX, VY, 0, 0, 1920, 1080, test.bmp

분석을 해 봅시다.

test.bmp 파일을 일단 만들어야겠죠
서치 할 이미지를 만들고 파일명은 test로 저장했습니다.

VX, VY에는 test.bmp와 같은 파일이 화면에 있다면 그 이미지의 좌상의 좌표가 저장됩니다.

0,0,1920,1080 이미지를 서치 할 범위인데요
0,0 시작점
시작점에서의 가로길이 1920
시작점에서의 세로 길이 1080

보통 많이 쓰는 디스플레이 해상도죠
1920x1080입니다.

이 범위 안에서 저장한 test.bmp 이미지 파일과 똑같은 이미지가 화면에 있다면
그 이미지 위치가 VX VY에 저장이 됩니다.

msgbox로 저장된 위치의 좌표를 확인하고 싶다면

msgbox, X좌표 %VX%, Y좌표 %VY%

이렇게 해보시면 저장된 좌표 위치가 확인이 가능하겠죠


이미지를 찾았는지? 어땠는지? 알아보는 방법

 

이미지 서치를 하고 나면 그 결과가  편입 변수 errorlevel에 저장이 되는데요
errorlevel 값이 0이면 서치 성공
errorlevel 1이면 이미지를 못 찾았고
errorlevel 2면 문제가 발생하고 있다는 것입니다.

 

errorlevel의 값을 출력해보면 알겠지만 
이미지 서치에서 아래의 소스처럼 하나로 기억해두는 것이 좋습니다.

imagesearch, VX, VY, 0, 0, 1920, 1080, test.bmp
if (errorlevel = 0)
 {
     ; 찾았을경우 기록될 소스

 }

이미지 오차 범위를 조정해서 정확도를 높여보자

 

BMP 파일이 오차가 적다고 위에 알려드렸지만
이미지를 못 찾는 경우가 너무너무 많습니다.

각종 프로그램 안의 이미지를 찾는다거나
게임에서 사용할 때 말이죠

그래서 오차 범위를 설정해서 이미지를 잘 찾게 설정할 수 있습니다.

imagesearch, VX, VY, 0, 0, 1920, 1080, *25 test.bmp

오차 범위는 0~255까지 설정 가능하고
실제로 테스트해 보면서 높은 수에서 낮은 수로 가면서 잘 찾아지는 최저의 오차 범위로 하시면 됩니다.

 


이미지에서 원하는 색깔 제외하고 찾기


조금 더 게임에서 돌릴 수 있는 단계까지 왔습니다.

사용자 환경마다, 게임 안에서의 이미지의 변화 등으로 인한
이미지 서치에 대한 기능이 상실되는 경우가 많습니다.
이것을 해결해주기 위해서는

imagesearch, VX, VY, 0, 0, 1920, 1080, *transwhite *25 test.bmp  ;콤마 확인 필수

trans입니다.
지금 위의 소스대로 라면 흰색은 서치를 하지 않는다고 보시면 됩니다.
*TransBlack *TransFFFF00 *Trans0xFFFF00
이런 식으로 색상을 나타낼 수 있습니다.

https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&oquery=%EC%83%89%EC%83%81%EC%BD%94%EB%93%9C&ie=utf8&query=%EC%83%89%EC%83%81%ED%8C%94%EB%A0%88%ED%8A%B8

 

색상팔레트 : 네이버 통합검색

'색상팔레트'의 네이버 통합검색 결과입니다.

search.naver.com


주의사항

 

이미지는 다른 창에 숨겨지거나 화면에서 보이지 않으면 검색을 하지 못합니다.
마우스 포인터로 가려진 부분은 서치 가능!
bmp 파일의 색 가짓수가 8비트(256색) 이하인 경우 동작하지 않습니다.