자동화를 꿈꾸던 저에게 크나큰 빛을 주었던 오토 핫키 기능 imagesearch(이미지 서치)입니다.
하지만 거의 1개월 정도 저에게 좌절감을 주었습니다.
그렇게 1개월정도 열심히 찾은 뒤 깨달았습니다.
imagesearch에서 가장 중요한 것 중 1개는 coordmode 였습니다.
사실 imageserach를 모르시는 분은 먼저 imagesearch에 대해서 공부를 하셔야겠죠?
Imagesearch(이미지 서치) 설명
imagesearch란 단어 그대로 이미지를 찾는 것입니다.
그래서 엄청난 것들을 할 수 있습니다.
해당 이미지를 찾았을 때 해당 이미지를 클릭하라.
저런 행위들이 가능하게 됩니다.
모니터에 보이는 것을 그대로 찾을 수 있기 때문에 유용하다고 생각합니다.
그러면 ImageSearch의 사용방법부터 알아보겠습니다.
ImageSearch , OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile
하나씩 의미를 알려드리겠습니다.
변수 | 내용 |
OutputVarX | 이미지를 찾았을 때 이미지의 x좌표 위치 |
OutputVarY | 이미지를 찾았을 때 이미지의 y좌표 위치 |
X1 , X2 | 모니터 기준 가로 X1좌표 ~ X2좌표 까지 이미지 검색 |
Y1 , Y2 | 모니터 기준 세로 Y1좌표 ~ Y2좌표 까지 이미지 검색 |
이렇게입니다.
그리고 모니터 전체를 검색하는 방법은
X1 = 0 , X2 = A_ScreenWidth ;0부터 해당 스크린의 폭 크기까지
Y1 = 0 , Y2 = A_ScreenHeight ;0부터 해당 스크린의 높이 크기까지
이렇게 해서 화면 전부를 검색할 수 있습니다.
하지만 대부분은 화면 전부를 검색하지 않고 일정 부분만 검색하게 됩니다.
이유
1. 속도 측면 = 작은 영역을 검색하는 게 큰 영역을 검색하는 것보다 빠릅니다.
2. 동일 이미지 노출 = 2개 이상의 동일한 이미지가 있을 때 검색해야 되는 특정 부분만 설정합니다.
그런 뒤 이미지 검색 결과 유무는 errorlevel을 통해서 확인이 가능합니다.
errorlevel과 if문을 함께 사용하여 찾았을 때 못 찾았을 때 처리가 가능합니다.
1::
imagesearch , x , y , 0 , 0 , A_ScreenWidth , A_ScreenHeight , *유사성 num5.jpg
if (errorlevel = 0)
{
msgbox 이미지찾음 ;num5.jpg를 찾았다면 여기 코드
}
else if (errorlevel = 1)
{
msgbox 이미지못찾음 ;num5.jpg를 못찾았다면 여기 코드
}
이런 식으로 말이죠.
※ 여기서 유사성 = 숫자로 표시해야 되며 0 ~ 255까지 입니다. (0은 완전 일치 , 255은 엄청 대충 보는 것)
※ 가장 위 1:: 것은 키보드 숫자 1을 선택했을 때 아래 코드가 진행되도록 한 것입니다.
이미지 서치를 예시로 한번 보여드리겠습니다.
이렇게 계산기의 숫자 5 버튼을 num5.jpg 파일로 하나 만들었습니다.
그렇게 해서 이미지 서치를 했습니다. 그런데 못 찾을 수 있습니다.
그럴 때는 유사성 값을 계속 수정해서 검색하시면 됩니다.
계산기를 선택한 상태에서 이미지 서치를 하면
아래와 같이 이미지를 검색할 수 있습니다.
그런데 동일한 상태인데 다른 프로그램을 선택한 뒤 검색을 하면 이미지를 찾을 수 없습니다.
이럴 때 사용되는 게 바로 아래 설명하는 CoordMode입니다.
CoordMode 설명
CoordMode , 타깃 타입 , 인식 방법
이렇게 입력해야 합니다.
타겟타입 | 내용 |
Pixel | Imagesearch 또는 PiexlSearch를 체크방법 |
Mouse | Mouse 위치에 체크방법 |
Caret | * 이부분은 이번 내용과 무관하기 때문에 제외 하겠습니다. |
Menu | |
Tooltip |
인식방법 | 내용 |
Screen | 화면 전체를 이용하여 |
Relative | 활성화 되어있는 프로그램 * 기본값 (설정) |
Window | Relative와 동일합니다. *차이점이 있을것 같지만 못찾고있습니다. |
Client | 윈도우의 가장자리가 좌표에서 빠집니다. |
해당 코드를 추가하니 일정을 선택해도 이미지는 검색이 됩니다.
coordmode , pixel , screen
1::
imagesearch , x , y , 0 , 0 , A_ScreenWidth , A_ScreenHeight , *50 num5.jpg
if (errorlevel = 0)
{
msgbox 이미지찾음 ;num5.jpg를 찾았다면 여기 코드
}
else if (errorlevel = 1)
{
msgbox 이미지못찾음 ;num5.jpg를 못찾았다면 여기 코드
}
이렇게 입력하면 검색이 됩니다.
coordmode , pixel , screen 없다면 현재 실행되고 있는 프로그램 내에서만 검색이 됩니다.
그리고 이것을 pixel 이 아닌 mouse로 변경한다면 동일합니다.
기본값은 항상 지금 실행되고 있는 프로그램입니다.
하지만 지금 실행되지 않는 프로그램을 선택해야 되거나 마우스를 움직여야 한다면
Coordmode , Mouse , Screen을 하시면 됩니다.
이것도 대표적인 예시 코드를 만들어보자면
2::
mousemove , 0 , 0
return
3::
coordmode , mouse , screen
mousemove , 0 , 0
return
키보드 2와 3을 누르면 마우스는 0, 0으로 이동합니다.
계산기를 화면 중앙에 둔 상태에서 테스트를 진행해보시면 금방 알 수 있습니다.
키보드 2를 누르면 계산기에 표시되어 있는 좌측 상단 부분으로 이동
키보드 3을 누르면 모니터 상 가장 좌측 상단 부분에 마우스가 이동하게 됩니다.
이렇게 해서 Coordmode는 사실 상당히 중요한 부분이며 빠트리면 안 되는 코드 중 1개입니다.
부가적인 도구
웹사이트를 다니다 그냥 이미지 서치에 편리한 도구가 있어서 하나 링크합니다.
https://blog.naver.com/jyaqz/222245478774
속도를 최적화하기 위해서는 영역을 타이트하게 잡는 것도 하나의 방법이기 때문에 좋은 듯합니다.
'컴퓨터 > 오토핫키' 카테고리의 다른 글
제작 프로그램에 인증 요구 기능 만들기 - 오토핫키 (0) | 2021.08.03 |
---|---|
오토핫키 WinHttpRequest.5.1 사용 웹 크롤링 하기 (0) | 2021.07.22 |
오토핫키 Edit Gui를 선택했을 때 함수를 실행하는 방법 - OnMessage (0) | 2021.07.17 |
오토핫키 추가 된 Label GUI를 닫을 때 프로그램 종료하는 방법 (0) | 2021.07.14 |
오토핫키 GUI 중 EDIT 상하스크롤 없애기 (0) | 2021.07.09 |
댓글