컴퓨터/오토핫키

imagesearch(이미지서치)의 모든것 , 기본 설명 및 반드시 필요한 지식 coordmode

큐브빌드 2021. 7. 19. 06:57
반응형

자동화를 꿈꾸던 저에게 크나큰 빛을 주었던 오토 핫키 기능 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

 


imagesearch(이미지서치) 테스트 프로그램

해당 파일은 오토핫키로 만든 프로그램으로 바이러스는 없지만 윈도우10에서 바이러스로 나올 수 있습니다....

blog.naver.com

속도를 최적화하기 위해서는 영역을 타이트하게 잡는 것도 하나의 방법이기 때문에 좋은 듯합니다.

반응형