[Autohotkey][14] 오토핫키 완벽분해 강좌 - PixelSearch 픽셀서치

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



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

이번 시간에는 이미지 서치에 이어, 픽셀 서치를 사용해 보도록 하겠습니다.

픽셀 서치는 이미지 서치와 굉장히 유사하니 imagesearch 글을 다시한번 정독하시고 오시길 바랍니다.


2019/04/08 - [프로그래밍/AutohotKey] - [Autohotkey][12] 오토핫키의 꽃 ImageSearch - 1

2019/04/08 - [프로그래밍/AutohotKey] - [Autohotkey][13] 오토핫키의 꽃 ImageSearch - 2


픽셀서치란?


픽셀(Pixel) 이란건 다들 아시다시피 컴퓨터의 한 점을 의미합니다.

픽셀서치(PixelSearch)는 말 그대로 한 픽셀의 색을 검사해

일정 색 범위 안에 들어가는 픽셀을 찾아내는 명령어입니다.


이미지서치와 굉장히 유사하기때문에(점 1개인 이미지서치일려나요? ㅎㅎㅎ...)

이미지 서치와 유사하게 구현됩니다.


Pixelsearch,xx,yy,X1,Y1,X2,Y2,0x색상 코드,오차범위,Fast RGB


X1, Y2 과 X2, Y2는 이미지서치때처럼 시작 X1, Y1좌표와 끝 X2, Y2좌표를 의미하고

색상 코드의 경우 색의 RGB값을 의미합니다. 이는 PixelGetColor라는 함수나, Spy를 통해 알 수 있습니다


오차범위의 경우 이미지서치와 마찬가지로 얼마나 다른 색상까지를 인식해주냐의 범위입니다.



저 부분이 바로 Color 부분입니다.

사진의 경우 CCECFF 이니 0xCCECFF 로 쓰면 되겠네요.


뒤의 Fast와 RGB의 경우는 추후에 설명하도록 하겠습니다.


실전 적용 해보기



저같은 경우 바탕화면에 있는 크롬 아이콘을 픽셀서치 해보겠습니다.



Spy 프로그램을 켜고, 크롬의 빨간색 부분에 마우스 포인터를 올리니

Color가 DD4F42라고 알려줍니다.

이를 기억해 줍시다. 또한 저같은 경우 바탕화면이므로, 서치할 좌표(마우스 위치) 또한 알아두겠습니다.



픽셀서치 값을 입력해주고, 범위 또한 입력해 코드를 짠 후 테스트 해보겠습니다.




위와 같이 정상적으로 빠르게 인식하는것을 알 수 있습니다.



픽셀서치에서 Fast, RGB의 의미



픽셀 서치 공식 문서를 보면, ColorID 부분이 원래는 RGB(Red-Green-Blue) 순서가 아닌 BGR(Blue-Green-Red) 순서로 설정을 해야한다고 써져 있습니다.


하지만, 위의 Spy로 보면 색상이 자동으로 RGB 순서로 캡처되므로, 뒤의 Mode 에 설정을 해줘

강제로 RGB 순서로 설정을 하도록 해준겁니다.


참고로 PixelGetColor를 통해서 색상값을 가져오는 경우에는

PixelGetColor의 경우 디폴트 설정이 BGR이기 때문에 픽셀서치할시 BGR옵션(즉 RGB를 지운 상태)에서 해야합니다.



다음으로, Fast옵션의 경우에는, 일반 픽셀서치와 다른 알고리즘(가로로 픽셀서치가 하는게 아니라 세로 순서로 픽셀서치하고... 그 외에는 차이를 잘 모르겠네요 ㅎ;;)

대부분의 경우에는 Fast 옵션을 적용하는게 더 빠르고, 서칭하는 화면의 디스플레이 색 설정이 더욱 높은 비트일수록(24비트나 32비트) 더 빠르게 작동한다고 합니다. 오히려 8비트나 16비트의 경우에는 느릴수도 있다고 하네요.


자세한 것은 해당 사이트를 참고해보시길 바랍니다.

https://autohotkey.com/docs/commands/PixelSearch.htm





솔직히 말하면 픽셀서치의 경우 그다지 명시성이 없고,

공통점이 되는 점이 너무 많을 가능성이 존재하기 때문에 저도 주로 이미지서치를 사용하지, 픽셀서치를 사용하는 편은 아닙니다.


하지만, 빠른 속도를 필요로 하거나 완전한 정밀도를 요구하는 작업이라면 픽셀서치를 고려해보는 것도 나쁘지 않으리라 생각됩니다.

아무쪼록, 유용한 편을 선택하셔서 프로그래밍하시길 바랍니다.




공감 버튼을 눌러주시면

블로거에게 힘이 됩니다!