매크로

  • 본 서버 접속이 안되는 분들은 링크를 참고해주시기 바랍니다.
  • 이곳은 테일스타 미러 서버 입니다. 미러 서버는 회원정보가 최신이 아닐 수 있으며 속도가 느릴 수 있습니다.
  • 미러서버에서는 포인트가 정상적으로 적용되지 않으므로 본 서버에서 활동해주시기 바랍니다.
  • 로그인 및 글 작성은 본 서버를 이용해주시기 바랍니다.
조회 수 821 추천 3 댓글 25

템플릿 매칭이란?





El54A2y.png


템플릿 매칭이란 OpenCV의 함수중의 하나로, 이미지에서 템플릿 이미지와 유사한 영역을 찾아내는 방법으로, 

템플릿 이미지를 입력 이미지에서 이동시켜가면서 템플릿 이미지와 일치, 혹은 유사한 영역을 검출합니다.

 

이는 오토핫키의 이미지서치와 비슷해보이지만, 여러가지 차이점이 있습니다.

오토핫키의 이미지 서치는 검색 이미지와 완벽히 1대1로 매치되는 이미지를 검색하며, 조금이라도 픽셀값이 다르거나 하면 이미지를 검출해내지 못합니다.

 

그에 반해 템플릿 매칭은 이미지가 완벽히 1대1로 매치되지 않더라도, 비슷한 이미지를 검출해 내는것이 가능합니다.

Ih6LAKX.png

SbRGoKs.png

이러한 차이점 때문에 두가지 이미지 대조방식을 상황에 따라 적절히 사용하면 보다 높은 활용성을 얻을 수 있습니다.

 

OpenCV의 템플릿 매칭 함수는 총 6가지의 Method를 제공합니다.

 

1. TM_SQDIFF

2. TM_SQDIFF_NORMED

3. TM_CCORR

4. TM_CCORR_NORMED

5. TM_CCOEFF

6. TM_CCOEFF_NORMED

[참조 : https://docs.opencv.org/master/d4/dc6/tutorial_py_template_matching.html]

 

 

라이브러리 함수


기본적으로 OpenCV에서는 오토핫키를 위한 모듈을 따로 지원하진 않지만, 오토핫키에서 또한 DllCall을 이용해 사용이 가능합니다.

제작된 라이브러리 사용 환경은 AutoHotkey 32bit, 64bit / Window 10 입니다. [2020 09 02 업데이트]

Window 7 의 경우, Visual C++ Redistributable 패키지를 설치하시면 이용이 가능합니다

 

라이브러리의 함수는 다음과 같습니다.

1. TemplateMatch(ByRef Out_X, ByRef Out_Y, Find_X1, Find_Y1, Find_X2, Find_Y2, SearchImage, Method)

    : 전체 화면으로 부터 단일 이미지를 검색합니다

2. MultiTemplateMatch(Find_X1, Find_Y1, Find_X2, Find_Y2, Threshold, SearchImage, Method)

    : 전체 화면으로 부터 다중 이미지를 검색합니다

3. TemplateMatchFromImage(InputImage, SearchImage, ByRef Out_X, ByRef Out_Y, Method)

    : 이미지파일로 부터 단일 이미지를 검색합니다

4. MultiTemplateMatchFromImage(InputImage, SearchImage, Threshold, Method)

    : 이미지파일로 부터 다중 이미지를 검색합니다

5. TemplateMatchFromHWND(ByRef Out_X, ByRef Out_Y, HWND, SearchImage, Method)

    : HWND값으로 부터 단일 이미지를 검색합니다

6. MultiTemplateMatchFromHWND(HWND, Threshold, SearchImage, Method)

    : HWND값으로 부터 다중 이미지를 검색합니다


MaxVal := TemplateMatch(OutputVarX, OutputVarY, X1, Y1, X2, Y2, SearchImage [, Method])


MaxVal 

일치율을 반환합니다 Method에 따라 각기 다른 형태를 지닙니다


OutputVarX/Y 

화면에서 이미지가 발견된 X, Y 좌표를 저장할 변수의 이름


X1, Y1, X2, Y2 

검색을 진행할 범위


SearchImage 

검색할 이미지의 파일 이름. 경로를 지정하지 않으면 %A_WorkingDir% 에 있다고 간주합니다


Method 

검출하는 Method. 비워둘시 TM_SQDIFF Method를 채택합니다



OutputVarXY := MultiTemplateMatch(X1, Y1, X2, Y2, Threshold, SearchImage [, Method])


OutputVarXY 

이미지가 발견된 X, Y 좌표를 X1,Y1 (엔터) X2,Y2 (엔터) X3,Y3 ... 형식으로 반환합니다 추후 파싱을 필요


X1, Y1, X2, Y2 

검색을 진행할 범위


Threshold

이미지 검출시 검출의 임계값. Method에 따라 각기 다른 임계값을 적절히 사용해 주어야 합니다.

임계값을 너무 높게 설정해줄 경우 템플릿과 관련이 없는 이미지를 검출할 가능성이 높아지고, 

임계값을 너무 낮게 설정해줄 경우 일치하는 이미지를 검출하지 못할 수 있습니다


SearchImage 

검색할 이미지의 파일 이름. 경로를 지정하지 않으면 %A_WorkingDir% 에 있다고 간주합니다


Method 

검출하는 Method. 비워둘시 TM_SQDIFF Method를 채택합니다



MaxVal := TemplateMatchFromImage(InputImage, SearchImage, OutputVarX, OutputVarY [, Method])


MaxVal 

일치율을 반환합니다 Method에 따라 각기 다른 형태를 지닙니다


InputImage 

검색할 전체 이미지 파일 이름. 해당 이미지 파일에서 SearchImage 이미지를 검출합니다


SearchImage 

검색할 이미지의 파일 이름. 경로를 지정하지 않으면 %A_WorkingDir% 에 있다고 간주합니다


OutputVarX/Y 

화면에서 이미지가 발견된 X, Y 좌표를 저장할 변수의 이름


Method 

검출하는 Method. 비워둘시 TM_SQDIFF Method를 채택합니다



OutputVarXY := MultiTemplateMatchFromImage(InputImage, SearchImage, Threshold [, Method])


OutputVarXY 

이미지가 발견된 X, Y 좌표를 X1,Y1 (엔터) X2,Y2 (엔터) X3,Y3 ... 형식으로 반환합니다 추후 파싱을 필요


InputImage 

검색할 전체 이미지 파일 이름. 해당 이미지 파일에서 SearchImage 이미지를 검출합니다


SearchImage 

검색할 이미지의 파일 이름. 경로를 지정하지 않으면 %A_WorkingDir% 에 있다고 간주합니다


Threshold

이미지 검출시 검출의 임계값. Method에 따라 각기 다른 임계값을 적절히 사용해 주어야 합니다.

임계값을 너무 높게 설정해줄 경우 템플릿과 관련이 없는 이미지를 검출할 가능성이 높아지고, 

임계값을 너무 낮게 설정해줄 경우 일치하는 이미지를 검출하지 못할 수 있습니다


Method 

검출하는 Method. 비워둘시 TM_SQDIFF Method를 채택합니다



MaxVal := TemplateMatchFromHWND(OutputVarX, OutputVarY, HWND, SearchImage [, Method, X1, Y1, X2, Y2])


MaxVal 

일치율을 반환합니다 Method에 따라 각기 다른 형태를 지닙니다


OutputVarX/Y 

화면에서 이미지가 발견된 X, Y 좌표를 저장할 변수의 이름


HWND 

검색을 진행할 HWND값


SearchImage 

검색할 이미지의 파일 이름. 경로를 지정하지 않으면 %A_WorkingDir% 에 있다고 간주합니다


Method 

검출하는 Method. 비워둘시 TM_SQDIFF Method를 채택합니다


X1, Y1, X2, Y2 

검색을 진행할 범위. 비워둘시 해당 HWND전체로부터 검색합니다



OutputVarXY := MultiTemplateMatchFromHWND(HWND, Threshold, SearchImage [, Method, X1, Y1, X2, Y2])


OutputVarXY 

이미지가 발견된 X, Y 좌표를 X1,Y1 (엔터) X2,Y2 (엔터) X3,Y3 ... 형식으로 반환합니다 추후 파싱을 필요


HWND 

검색을 진행할 HWND값


Threshold

이미지 검출시 검출의 임계값. Method에 따라 각기 다른 임계값을 적절히 사용해 주어야 합니다.

임계값을 너무 높게 설정해줄 경우 템플릿과 관련이 없는 이미지를 검출할 가능성이 높아지고, 

임계값을 너무 낮게 설정해줄 경우 일치하는 이미지를 검출하지 못할 수 있습니다


SearchImage 

검색할 이미지의 파일 이름. 경로를 지정하지 않으면 %A_WorkingDir% 에 있다고 간주합니다


Method 

검출하는 Method. 비워둘시 TM_SQDIFF Method를 채택합니다


X1, Y1, X2, Y2 

검색을 진행할 범위. 비워둘시 해당 HWND전체로부터 검색합니다


라이브러리 파일


해당 라이브러리는 사용하시는 스크립트 파일과 함께

#Include TemplateMatch.ahk 를 스크립트 상단에 선언해주시고 사용하시고자 하시는 함수를 사용하시면 됩니다

32bit(x86) 버전과 64bit(x64) 버전 중 사용하시는 윈도우 버전 혹은 오토핫키 버전에 맞춰 다운로드하시면 됩니다

 

사용시 대략적인 예제를 폴더에 포함해 두었으니, 해당 예제로 테스트를 해보면서 익히면 이해에 도움이 됩니다

[2020 09 17 업데이트]

1. HWND값 좌표지정기능 추가

2. 메모리 누수 보안


AutoHotkey 32Bit(x86) 버전 : 

drive.google.com/file/d/1w59vqg67VVO1Z_ITW7ExGwyRcEVg0ucn/view?usp=sharing


AutoHotkey 64Bit(x64) 버전 :

drive.google.com/file/d/1WOB4g-IotubdtqJWyj9WfYdj9fbaYXuy/view?usp=sharing



List of Articles
제목 글쓴이 최근변경 날짜 추천
오토핫키 OpenCV 템플릿매칭 라이브러리 25 CatLab 2021.02.23 2020.09.03 3/0
아이템획득, 특정이벤트 발생 시 카톡으로 알림 35 dlslwl 2021.02.23 2020.06.09 1/0
수정추가) 이미지 좌표 스크립트 + 픽셀 10 MaximM 2021.01.16 2019.11.28 0/0
비활성 키입력 함수(가상키값 리스트화) 48 hersia 2021.01.16 2019.02.16 0/0
랜덤좌표 스크립트 입니다. 72 sama 2021.01.19 2018.10.20 2/0
특정확장자 삭제하기 16 여의도김매력 2020.09.29 2018.05.01 0/0
화면안에서 마우스좌표 따기입니다. 99 MaximM 2021.02.06 2017.09.18 1/0
MsgBox, InputBox 등을 통해 사용자 입력 받기 35 ferento 2020.04.26 2017.07.01 1/0
함수 Function 에 대한 이해 273 예지력1 2021.02.23 2015.11.08 21/0
코드 최적화 Code Optimization 122 예지력1 2020.11.22 2015.10.15 23/0
코드의 속도, 성능을 높이는 한줄 팁 모음 181 예지력1 2021.02.23 2015.10.09 20/0
오토핫키 반응형 학습 어플리케이션 302 예지력1 2020.11.22 2015.02.22 40/0
[문법] Try, Catch 함수를 Try하고 예외를 Catch 한다 101 예지력1 2020.10.12 2015.02.18 8/0
[디자인] GUI 스킨 210 예지력1 2021.02.06 2015.02.13 9/0
내장파일 설치 가상화 131 예지력1 2021.02.06 2015.02.09 27/0
FileInstall 파일을 설치하기 117 예지력1 2020.11.22 2015.02.06 11/0
작성중인 오토핫키 강좌글입니다. 510 예지력1 2021.02.10 2015.02.05 54/0
Board Pagination Prev 1 Next
/ 1

전체 최신 인기글

전체 주간 인기글

테일스타 공지