반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

LearningNote

[오토핫키] 이미지 서치(3) 본문

오토핫키

[오토핫키] 이미지 서치(3)

LN 2020. 7. 21. 23:40
반응형

이미지 서치에 대해 소개하면서,

컴퓨터마다, 그래픽 카드마다 이미지를 처리하는 방식이 다를 수 있으므로

이미지 서치는 안정적인 방식이 아니라고 말씀드렸습니다.

이점을 어느 정도는 보완할 수 있는 방법에 대해 알아보려고 합니다.

 

ImageSearch 마지막 인자인 ImageFile 에는

여러 옵션을 지정할 수 있습니다.

 

그중에서 가장 많이 쓰이는 두 가지 정도만 다루어 볼 예정입니다.

첫 번째는 이미지 전처리이며,

두 번째는 오차 범위입니다.

 

ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, *TransN *n ImageFile

 

문법에 유의하세요.

쉼표와 공백을 잘 구분하여 사용해야 합니다.

 

*TransN 옵션을 사용하면 이미지 안에서

화면 안의 어느 컬러에도 부합할 색상을 지정할 수 있습니다.

 

투명 구역이 있는 PNG, GIF, 그리고 TIF 파일을 찾는 데 자주 사용됩니다.

 

GIF 파일에 대하여, *TransWhite 면 대부분 작동할 것이며,

PNG와 TIF 파일에 대하여, *TransBlack 이 가장 적합합니다.

 

N 부분에 다른 어떤 칼라 이름 또는 RGB 값을 지정할 수 있습니다.

 

*n 옵션에는 0 부터 255 까지의 숫자를 지정하여

오차 허용 범위를 설정할 수 있습니다.

 

숫자가 작으면 엄격하게 찾는 것이고,

숫자가 높으면 느슨하게 검색합니다.

 

예를 들어, 아이유 사진을 검색한다고 하면,

숫자가 높을수록 신봉선도 아이유로 인식될 가능성이 높아집니다.

 

기본 값은 0 이며, 30 정도의 값을 지정할 것을 권장합니다.

 

값을 넣어 다시 한번 코드를 보여드리겠습니다.

 

!3::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png
return

 

이번에는 이미지 서치가 제대로 이루어졌는지를

알 수 있는 방법에 대해 배워보겠습니다.

 

ErrorLevel 이라고 하는 내장 변수가 있습니다.

ImageSearch 를 비롯하여 몇몇 명령어가 실행된 후에는

자동으로 ErrorLevel 변수에 값이 들어갑니다.

 

ImageSearch 의 경우에는,

ErrorLevel 에 0, 1, 2 의 값 중 하나가 들어갑니다.

 

각각의 값이 어떤 경우에 들어가는지에 대해 설명드리겠습니다.

0: 지정한 영역 내에서 정상적으로 이미지를 찾은 경우
1: 지정한 영역 내에서 이미지를 발견하지 못한 경우
2: 오류로 인해 이미지를 서치를 수행하지 못한 경우

 

ErrorLevel 이 2 인 경우에는, 주로 해당 이미지 파일이 지정된 경로에 없어서 발생하는 경우가 많습니다. 이 점 주의하세요.

 

이렇게 내장 변수를 제공해주기 때문에

좀 더 완성도 있는 프로그램을 만들 수 있어졌습니다.

 

이미지 서치에 성공한 경우에는 그 위치를 클릭하고,

실패한 경우에는 그에 알맞은 오류 메시지를 띄우도록

코드를 작성해보세요.

 

ImageSearch

 

힌트는 조건문 if 입니다.

 

!4::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png

if (ErrorLevel == 0)
{
	Click, %vX%, %vY%, 1
}
else if (ErrorLevel == 1)
{
	MsgBox, 이미지를 찾지 못했습니다.
}
else if (ErrorLevel == 2)
{
	MsgBox, 오류가 발생하여 이미지 서치를 수행하지 못했습니다. 이미지 파일의 경로를 확인해주세요.
}
return

 

이미지 서치에 관해 좀 더 자세히 알고 싶으신 분은

다음의 링크를 살펴보시기 바랍니다.

 

autohotkeykr.sourceforge.net/docs/commands/ImageSearch.htm

 

지금까지 했던 이미지 서치의 전체 코드를 다시 한번 보면서

복습하시기 바랍니다.

 

#SingleInstance, Force


F4::
ExitApp


!1::
ImageSearch, vX, vY, 0, 0, 1600, 1200, ./image1.png
Click, %vX%, %vY%, 1
return


!2::
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, ./image1.png
Click, %vX%, %vY%, 2
return


!3::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png
return


!4::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png

if (ErrorLevel == 0)
{
	Click, %vX%, %vY%, 1
}
else if (ErrorLevel == 1)
{
	MsgBox, 이미지를 찾지 못했습니다.
}
else if (ErrorLevel == 2)
{
	MsgBox, 오류가 발생하여 이미지 서치를 수행하지 못했습니다. 이미지 파일의 경로를 확인해주세요.
}
return
반응형

'오토핫키' 카테고리의 다른 글

[오토핫키] 함수(2)  (0) 2020.08.13
[오토핫키] 함수(1)  (0) 2020.07.24
[오토핫키] 이미지 서치(2)  (0) 2020.07.20
[오토핫키] 이미지 서치(1)  (0) 2020.07.16
[오토핫키] 반복문(2)  (0) 2020.07.13
Comments