이미지 서치로 오토핫키를 접하신 분이 꽤 되실겁니다. 본 강좌는 이전 강좌의 내용을 모두 숙지하고 있다는 점을 전제로 하고 진행됩니다. 혹여나 이전 강좌를 보지 않으셨다면 1강부터 기초를 쌓고 오시는 것을 추천드립니다. 기초도 없이 이미지 서치부터 배운다는 것은 욕심 아니겠습니까. 추가로, 이미지 서치는 상당히 불안정한 기술입니다. 되도록이면 사용하지 않으셨으면 좋겠습니다. 다른 대체방법을 찾을 수 있으면 그 방법을 사용해주세요. 화면에서 이미지를 찾는 ImageSearchImageSearch는 사용자가 가지고 있는 이미지가 화면 상에 있는지 검사하고, 있다면 그 이미지가 어디 있는지까지 알려주는 명령어입니다. 위 그림에서 보면, 왼쪽 별 모양이 컴퓨터 화면에 그대로 있습니다. 이럴 경우 ImageSearch를 사용해준다면 이미지는 있다고 알려 줄 것이고, 해당 이미지의 좌표는 (X , Y)라고 알려줄 것입니다. 백문이 불여일견, 한번 해봅시다. 매개변수ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile
지난 강좌까지 잘 따라왔다면 이해가 가지 않는 부분은 없을거예요. 좌표를 두 쌍씩 써주는 것이 이해가 가지 않을 수 있지만, 아래 그림을 보면 이해하실 수 있습니다. 마지막 매개변수인 ImageFile 매개변수는 찾을 이미지의 경로를 입력해주시면 됩니다. 앞에 드라이브 문자(C:\, D:\등)가 붙지 않게 써주신다면 "현재 스크립트 기준"으로 경로를 입력해주면 됩니다. (상대 경로라고 합니다.) 즉, 현재 스크립트와 이미지 파일이 같은 경로에 있다면 이미지명만 써주시면 되고, Images라는 폴더에 들어있다면 Images\이미지명으로 써주시면 됩니다. (이 때, 이미지명은 확장자를 포함합니다.) 그리고, ImageFile 매개변수에는 몇 가지 옵션을 줄 수 있습니다. 여러가지 옵션이 있지만 *n 옵션이 제일 자주 사용됩니다.
즉 이미지 파일과 화면 상의 이미지의 오차가 있을 경우에 대비하여 적절히 써주시면 됩니다. 모르겠다! 싶으시면 30정도 적어주시면 적당합니다. 옵션은 이미지 파일 경로보다 앞에 써주며, 한 칸을 띄워줍니다. 이미지 따기화면상에 찾을 이미지를 캡처하여 저장하는 것을 "이미지를 딴다"라고 합니다. 캡처는 자유롭게 하시되, 파일 저장 형식은 손실이 일어나지 않는 png나 bmp확장자로 저장해주세요. 캡처 도구를 이용하시거나, (캡처 프로그램 흰캡처)를 이용해서 이미지를 캡처하신 후 저장하시면 됩니다. (흰캡처는.. 제가 만든 프로그램입니다. 오토핫키는 아니구요, 강좌를 잘 보시고 있다면 한번 사용해보셨으면 좋겠습니다 ^^) 이미지를 따는 요령을 몇 가지 알려드리겠습니다.
작을수록 서치 속도가 빨라지며, 특징이 드러나게 따야 이미지가 한 부분만을 찾습니다. ErrorLevel 내장 변수ErrorLevel이라는 내장 변수가 있습니다. 지금까지 봐왔던 내장변수와 다르게, A_ 접두어가 붙지 않습니다. 해당 내장변수는 현재 스크립트의 진행 상태가 담겨있는데, 0이면 정상적인 진행을 하고 있다는 뜻이고 1 이상이면 특정한 요인으로 인해 실패함을 나타냅니다. 이미지서치를 한 이후엔 ErrorLevel변수에 값이 새로이 담기게됩니다. 이미지를 정상적으로 찾으면 0, 못찾으면 1입니다. 간혹 2가 들어있는 경우가 있는데, 구문 오류 등으로 이미지 서치를 정상적으로 할 수 없는 경우에 나타납니다. MsgBox, %ErrorLevel% 위 구문을 통해 현재 ErrorLevel 값을 알 수 있습니다. 예제이미지는 스크립트와 같은 위치에 있다고 가정하고, 이미지의 이름은 Image.png라고 하겠습니다. ImageSearch, vx, vy, 0, 0, 1920, 1080, *30 Image.png 이 구문이 이미지 서치 구문이 됩니다. 0,0 부터 1920, 1080까지 Image.png과 동일한 이미지가 있는지 검사할 것입니다. 만약 찾는다면 MsgBox에 0이 출력되며 해당 이미지의 좌표가 vx, vy에 담길 것입니다. 못 찾는다면 vx, vy는 빈 값이고 ErrorLevel은 1이겠지요. 그럼 아래와 같은 스크립트를 생각해 볼 수 있습니다. F1:: 31강.zip 0.00MB 영상을 통해 확인해보겠습니다. 제가 딴 이미지는 아래와 같습니다. 제 사이트에는 제가 딴 이미지가 포함되어있고, 네이버 메인 화면에는 없습니다. 제 사이트에서 F1을 누르니 찾았다고 뜨며, 좌표가 나타납니다. 반면, 네이버에서 F1을 누르니 ErrorLevel 1을 보여주네요. ImageSearch와 CoordmodeImageSearch는 CoordMode명령어에서 TargetType 매개변수가 Pixel일 때 영향을 받는다고 말씀 드렸습니다. 마우스 관련 명령어는 Mouse일 때 영향을 받고요. 따라서, 마우스 동작을 이미지 서치의 출력 변수로 한다면 두 동작의 좌표 체계를 맞춰주어야 합니다. 아래는 마우스와 이미지서치의 좌표 체계를 맞춰준 모습입니다. CoordMode, Mouse, Screen 요약ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, *n ImageFile
사실 너무 길고 복잡한 내용입니다. 예제만 보여드리고 끝내도 사실 이리저리 만지작거리다 보면 뭐든 되는데, 굳이 그러지 않은 이유는 처음부터 이해를 시킬려고 한 제 욕심이겠지요. 제가 이미지 서치를 별로 좋아하지 않았던게, 강좌에 티가 나는 것일수도 있다는 생각이 듭니다. 다음 강의 PixelSearch는 이미지 서치를 완벽히 아신다는 가정 하에 진행됩니다. < 30. 배움에 지친 당신에게 | 31. ImageSearch | 32. PixelSearch > |