본문 바로가기
매크로

픽셀 서치, 이미지 서치, 이미지 매치 매크로

by 백수아저씨 2024. 10. 29.
반응형

안녕하세요. 업무 자동화 RPA 매크로 오토픽입니다.

오늘은 윈도우에서 화면을 인식해서 이미지 위치를 찾고 클릭할 수 있는 액션을 알아볼건데요.

대표적으로 픽셀 서치와 이미지 서치, 이미지 매치가 있습니다. 물론, 딥러닝 인공지능 욜로 매치도 있습니다.

 

각각의 이미지 서치 관련 액션들의 도움말을 보시면 어떤 방식으로 동작하는지 확인할 수 있습니다.

이미지 서치 관련 액션들은 자신이 속한 매크로에 동기적으로 작동합니다.

하지만, 이벤트들은 매크로가 동작중에도 백그라운드에서 독립적으로 실행하면서 이미지를 찾으면 알려줍니다.

필드몹 사냥중에 네임드 보스나 월드 보스가 출현하는걸 감지해서 이동할 수 있고, 스킬을 사용할수도 있습니다.

 

순차적으로 실행되는 매크로 환경에서 좀 더 빠르게 상황을 인지하고, 행동할 수 있게 해주는 기능이 이벤트입니다.

이 내용을 테스트하고 알아보기 위해 오토픽 에디터를 실행하고 좌측 하단의 도구 상자를 선택하세요.

조건 카테고리를 확장하면 픽셀 서치 이벤트 액션이 있습니다.

더블 클릭해서 스크립트에 추가하세요.

 

 

 

픽셀 서치의 기본적인 동작은 도움말을 참고하세요.

각각의 액션 도움말을 보려면, 해당 액션에서 우클릭한 후 도움말 보기를 선택하세요.

 

 

 

픽셀 서치 이벤트와 이미지 서치 이벤트 관련 액션들은 동일한 이름의 액션들과 기능이 100프로 동일합니다.

하지만, 이벤트 처리를 위한 몇가지 추가 옵션이 아래와 같이 존재하는데요.

 

 

 

우선, 그림판에 오렌지색 점을 하나 찍어놓고, 테스트 스크립트를 만들어 볼께요.

아래와 같이 왼쪽 상단과 오른쪽 하단에 오렌지색 점을 찍어두었습니다.

 

 

 

오른쪽 속성창에서 픽셀 선택을 클릭하고, 찾을 픽셀에 마우스를 이동합니다.

그리고, F1을 눌러서 픽셀 선택을 완료하세요.

 

 

 

백그라운드에서 동작하는 이벤트이기 때문에 매인에서 동작할 내용도 추가해줘야 합니다.

아래와 같이 무한 반복 루틴을 하나 만들어줍니다.

그룹과 액션 이동은 에디터 좌측 하단의 함수 상자에 들어있습니다.

 

 

 

마지막에 이벤트가 발생했을 때 이동할 액션을 하나 더 추가해줍니다.

그룹 액션을 추가하고 아이디는 b로 설정한 후 픽셀 서치 이벤트에서 이벤트가 발생했을 때 이동할 아이디로 b를 설정해줍니다.

 

 

 

이벤트는 백그라운드 시스템에 등록됩니다. 일반적으로 매인에서 작동하는 스크립트는 매크로가 완료되거나 중지될 때 동작을 멈춥니다.

비동기 액션들이나 이벤트도 자신이 속한 매인 스크립트가 완료되거나 중지될 때 같이 멈춥니다.

하지만, 무한 반복하는 매크로에서 어떤 상황이 발생하면 이벤트를 멈추고 싶을수도 있습니다.

이런 경우를 위해서 이벤트는 무조건 아이디를 설정해야 한다는 제약이 있습니다.

아래와 같이 픽셀 서치 이벤트의 아이디를 e로 설정해주세요.

※ 이벤트에 아이디를 설정하지 않으면 에디터 하단의 출력창에 경고 메세지가 표시됩니다.

 

 

 

매크로를 실행하면 화면에 오렌지색 픽셀을 찾고, 매크로는 완료됩니다.

그림판을 최소화 시켜놓고 실행하면 그룹과 액션 이동이 반복하면서 이벤트도 계속해서 픽셀을 찾는걸 확인할 수 있습니다.

 

 

 

출력창 로그

Welcome to AutoPeak!
https://autopeak.co.kr
[[NEW] Script 1] 스크립트를 실행했습니다.
픽셀 서치 이벤트 [e]
00:00:00.010
픽셀 위치:{X=255,Y=312,Width=1,Height=1}
마우스 좌표:{X=0,Y=0}
조건 결과:False

그룹 [a]
픽셀 위치:{X=255,Y=312,Width=1,Height=1}
마우스 좌표:{X=0,Y=0}
조건 결과:False

픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

00:00:00.013
액션 이동
00:00:00.011
반복한 횟수:0

그룹 [a]
반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

00:00:00.022
액션 이동
00:00:00.011
반복한 횟수:1

그룹 [a]
반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
00:00:00.006
액션 이동
00:00:00.005
반복한 횟수:2

그룹 [a]
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=0,Y=0,Width=0,Height=0}
마우스 좌표:{X=0,Y=0}
조건 결과:False

반복 횟수: 0
픽셀 위치:{X=620,Y=129,Width=1,Height=1}
마우스 좌표:{X=620,Y=129}
조건 결과:True

픽셀 위치:{X=620,Y=129,Width=1,Height=1}
마우스 좌표:{X=620,Y=129}
조건 결과:True

픽셀 위치:{X=620,Y=129,Width=1,Height=1}
마우스 좌표:{X=620,Y=129}
조건 결과:True

픽셀 위치:{X=620,Y=129,Width=1,Height=1}
마우스 좌표:{X=620,Y=129}
조건 결과:True

픽셀 위치:{X=620,Y=129,Width=1,Height=1}
마우스 좌표:{X=620,Y=129}
조건 결과:True

00:00:00.007
그룹 [b]
00:00:00.006
[[NEW] Script 1] 스크립트가 완료되었습니다.

 

출력 로그를 보면, 무한 반복 루틴이 실행중이지만 픽셀 서치도 같이 실행되는걸 확인할 수 있습니다.

매크로가 실행중에 최소화된 그림판을 다시 활성화시키면 픽셀을 찾고 바로 매크로가 완료됩니다.

로그를 잘 살펴보면 이벤트 매치가 계속되는걸 확인할 수 있을거예요.

이벤트는 중지시키지 않는한 계속해서 발생합니다.

만약, 이벤트를 한번만 발생시키고 자동으로 중지하려면 이벤트 자동 삭제 옵션을 True로 변경하세요. 

 

 

 

이벤트에서 가장 중요한 옵션인 이벤트 성능입니다. 이 옵션 값이 작을수록 더 빨리 이벤트가 발동합니다.

하지만, 빠르게 동작하는만큼 컴퓨터의 리소스(CPU, Memory)를 많이 사용합니다.

무거운 프로그램들이 실행중이라면 이 값을 적절하게 조정해야 할수도 있습니다.

픽셀 서치 이벤트의 자세한 내용은 아래 동영상을 참고해주세요.

감사합니다.

 

https://youtu.be/g4YgLTXGtoA

 

반응형

댓글