[Autohotkey][12] 오토핫키의 꽃 ImageSearch - 1

Posted by 아이티프로13
2019. 4. 8. 00:23 프로그래밍/AutohotKey


안녕하세요. 쿠과자입니다.

이번시간에는 오토핫키에서 가장 중요하다고 볼 수 있는

이미지 검색, 이미지 서치(imagesearch)에 대해서 알아보도록 하겠습니다.


저같은 경우에도 이미지 서치가 굉장히 좋아보여서 오토핫키를 시작했고

아직도 오토핫키를 배운걸 후회하지 않고 있습니다.

C#이나 C++ 같은 경우 몇십줄에 라이브러리를 까다롭게 이용해서 찾을걸

단 한줄에 가능하게 만드니 말이죠.


이미지 서치(ImageSearch) 란?



이미지 서치는 말 그대로 한 화면 안에서 정확히 그것과 일치하는 이미지를 찾는 명령어입니다.

이미지서치의 경우 좌측 상단부터 가로순,세로순으로 우측 하단까지 차례대로 검색하며

색이 어느정도 다르다면 오차값을 통해 인식이 가능하지만

이미지 크기가 다르거나, 가로폭이나 세로폭 등등이 다른경우 아예 인식이 불가능합니다

(경우에 따라서는 가능합니다)


Imagesearch,FoundX,FoundY,X1,Y1,X2,Y2,찾을이미지.png


위와 같은 형식이 기본적인 형식입니다.

FoundX,FoundY는 이미지를 찾은 이후 찾은 이미지의 x,y좌표를 저장할 변수

X1,Y1이미지를 찾기 시작할 위치,

X2,Y2이미지를 찾을 끝 위치가 됩니다.


이 두 좌표는 전에 알려드린 Spy에서 찾아도 되고

2018/12/15 - [프로그래밍/AutohotKey] - [6] 오토핫키 완벽분해 강좌 - 마우스 조작


아니면 전체 화면으로 검색하고 싶으시다 하시는분들은 0,0을 X1,Y1에

그 뒤에 X2,Y2를 내장 변수인 A_ScreenWidth 와 A_ScreenHeight에 넣으시면 됩니다.


그 외에 찾을 이미지 같은 경우에는 직접 따서 다른 설정이 없는 한 같은 경로에 저장하시면 됩니다.

참고로 말하지만 절대 JPG, JPEG 형식은 하지 말아주세요. BMP, PNG, GIF 형식만 사용해주시길 바랍니다

(JPG는 압축 형식이기 때문에 제대로 인식이 안됩니다)


X1,Y2, X2 Y2범위를 그림으로 나타내자면 이런식으로 설명이 됩니다.


F6::

imagesearch,xx,yy,0,0,A_screenwidth,A_screenheight,test.png

if(ErrorLevel = 0)

{

    Mouseclick,left,xx,yy

}

return


위와 같은 예제코드를 작성하고, test.png를 화면에서 찾을 아무 이미지나 하나 캡처해서 테스트해봅시다.

캡처는 참고로 칼무리나, 윈도우 내장 캡처나, 프린트스크린 등 아무거나 사용해도 상관없습니다.

확장자만 잘 맞춰주시면 되요.



저같은경우 바탕화면의 아이콘인 위의 이미지를 찾기위해 이미지를 땃습니다.

주변의 변할수 있는 부분은 배제하고, 가장 가운데나 변하지 않는 부분을 따는것이 제일 안정적입니다.

저같은 경우 위와 같이 이미지를 땃습니다.



잘 작동하죠?



ErrorLevel


다음으로, 에러레벨에 관련되어 알려드리겠습니다.

에러레벨은 위의 ScreenHeight 등과 마찬가지로 똑같이 내장변수로

특정 명령어를 실행시 실행 결과를 알려주는 변수입니다.


Imagesearch의 경우 제대로 찾았을시 0,

찾지 못하였을시 1,

이미지서치의 이미지 경로가 잘못되었을시 2를 반환합니다.


다른 명령어들도 ErrorLevel을 쓰는 경우가 가끔 있으니

이는 알고 사용하도록 합시다.






오늘은 간단히 이정도만 알아보고

다음 시간에는 색이 다른 이미지를 서치하는법, 투명화를 적용한 채로 이미지를 서치하는법

그리고 이미지서치에 관해 이리저리 더 얘기해 보도록 하겠습니다.


감사합니다!




공감 버튼을 눌러주시면

블로거에게 힘이 됩니다!