Autoit에서 ImageSearch 사용하기
Autoit에서 ImageSearch 사용하기
Autoit의 강력한 기능 중에 하나는 범용적인 자동화 도구를 손쉽게 만들 수 있도록 도와주는 확장성을 갖는 도구라고 본다. 그중에서도 타 애플리케이션에서도 종종 쓰이는 ImageSearch 라이브러리를 이용한 이미지 추적이다. 강력하다고 보는 이유는 이미지의 퀄리티에 따라 인식의 범위를 조절할 수 있기 때문이다.
기본 준비물은 Autoit 포럼에 있는 ImageSearch.au3와 라이브러리파일인 ImageSearchDLL.dll 파일이다. 이전 포스팅에서 소개했던 것처럼 install 실행파일에 포함할 수도 있다.
Autoit 포럼에 가면 64비트도 다운로드 할 수 있다. OS 따라 정할 수 있으며, Imagesearch UDF라는 응용된 것도 있으니 참고하기 바란다.
Image Search UDF - Automation - AutoIt Forums (autoitscript.com)
Image Search UDF
Use MouseClick() need: #RequireAdmin Dll is already integrated in UDF ! ; #INDEX# =============================================================== ; Title .........: ImageSearch ; AutoIt Version : 3.x ; Language ......: English ; Description ...: Check imag
www.autoitscript.com
그러면 지난번 포스팅했던 Serial Test 코드를 아래와 같이 약간만 편집해서 사용하도록 하자.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ImageSearch.au3>
HotKeySet("{ESC}", "_Exit");
Global $_searchImg, $_x = 0, $_y = 0;
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Image Search Test", 385, 200);
$Button1 = GUICtrlCreateButton("Image Search Pos", 32, 112, 145, 65);
$Button2 = GUICtrlCreateButton("Image Search Move", 216, 112, 145, 65);
$DebugText = GUICtrlCreateLabel("Debug Text : ", 32, 16, 200, 17);
GUISetState(@SW_SHOW);
#EndRegion ### END Koda GUI section ###
_Main();
Func _Main();
While 1;
; 이벤트 처리
$nMsg = GUIGetMsg();
Switch $nMsg;
Case $GUI_EVENT_CLOSE
Exit;
Case $Button1
SearchImg(0);
Case $Button2
SearchImg(1);
EndSwitch
sleep(20);
Wend;
EndFunc;
Func SearchImg($_mode)
$_searchImg = _ImageSearchArea("_img.bmp", 1, 0, 0, 1920, 1080, $_x, $_y, 10);
;~ $_searchImg = _ImageSearch("_img.bmp", 1, $_x, $_y, 50);
if($_searchImg = 1) Then
if($_mode = 1) Then MouseMove($_x, $_y, 10);
GUICtrlSetData($DebugText, "Debug Text : Find x : " &$_x&", y : "&$_y);
Else
GUICtrlSetData($DebugText, "Debug Text : Not Find or Error");
EndIf
EndFunc
Func _Exit();
Exit;
EndFunc
|
cs |
코드의 내용은 아래와 같은 pdf 아이콘을 화면에서 찾는 것이다.
영역을 지정하는 함수를 사용하여 화면 1920x1080내의 해당 아이콘이 있는지 찾는 것이다.
버튼 1은 포지션 값 가져오기이며 버튼 2는 마우스를 이동시키는 아주 간단한 사항이다.
이것을 응용하면 여러 이미지들을 배열로 입력하고 조건에 맞는 상황을 만들 수 있다. 심지어 웹카메라와 연결하여 간단한 사물인식까지도 가능하다. 물론 제대로 된 성능은 기대하기 어렵지만 가능은 하다.