기타 파이썬으로 이미지 매크로 만들기. (Creating an image macro in Python.)
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 새해가 밝았네요^^; 그동안, 보안이나 우회 관련 의뢰로 끝이 보이지 않는 일을 해왔습니다. 해외에서 프로그램도 공수해오고, 여러 커뮤니티도 들락날락하면서 테스트하고 검증하면서 힘든 1년을 보냈네요. 그러나~ 능력 부족으로 모두가 만족할만한 성과를 낼수는 없었습니다ㅠㅠ; 새해에는 여러가지 업무와 기능들을 포기한 대신 많은 시간과 여유를 얻을 수 있었습니다. 그래서, 새로운 사업 모델인 아이템 거래 솔루션을 만들기 위해 파이썬을 공부 중입니다. 일단, 그동안 쌓아온 노하우가 매크로에 있으므로 파이썬 매크로 만들기를 진행하면서 학습도 병행해야 할거 같아요^^
이전 글에서 파이썬으로 마우스를 제어하는 방법에 대해 간단하게 알아봤습니다. 오늘은 모니터 화면에서 원하는 이미지를 찾아 클릭하는 방법에 대해 알아볼께요. 이미 한번 해봤던 내용이라 크게 어렵지는 않겠지만, 그래도 이전 내용들을 미리 학습해보는게 좋겠습니다. 파이썬 개발 환경을 갖춰야 이 내용도 따라할 수 있기 때문이죠^^; 최대한 복잡한 설명은 배제하고, 동작할 수 있는 요점만 설명하면서 진행하도록 하겠습니다.
이미지 서치(엔지엠에서는 이미지 매치)와 마우스 클릭을 위한 패키지들을 설치 해줍니다. pyautogui는 파이썬 스크립트가 마우스와 키보드를 제어하여 다른 프로그램과 상호 작용할 수 있게 해줍니다. 장점은~ Windows, MacOS, Linux에서 작동한다는 점입니다. 리눅스는 GUI를 지원하는 버전에서만 되겠죠^^;
pip install pyautogui
이미지 서치에는 OpenCV가 필요합니다. 아래와 같이 패키지를 설치 해주세요.
pip install opencv-python
마지막으로~ 파이썬에서 이미지를 처리해주는 필로우를 설치하세요.
pip install pillow
파이썬은 스크립트 언어입니다. 보통 많이 알고 있는 자바스크립트와 같은 스크립트 언어들은 한줄씩 인터프리터가 해석하면서 실행됩니다. 그렇다보니 이미지를 바이트로 처리하는데 문제가 있습니다. 이런 문제를 해결해주는 패키지가 필로우입니다. 스크립트 언어들은 컴파일 언어에 비해 속도가 느릴수밖에 없습니다. 이제 찾을 이미지를 만들어야겠죠? 찾고자 하는 이미지를 source라고 명명하고, 소스 이미지를 찾을 전체 화면을 target이라고 부르겠습니다. 엔지엠 에디터를 실행한 후 아래와 같이 소스 이미지를 바탕화면에 저장합니다.
※ 파일명을 source.png 로 변경하세요.
아래 코드를 복사하여 붙여넣기 하고 Ctrl+F5를 눌러서 실행해보세요.
import pyautogui
import time
p_list = pyautogui.locateAllOnScreen("C:\\Users\\<사용자>\\Desktop\\source.png")
p_list = list(p_list)
print(p_list)
좌표 값이 표시됩니다.
PS C:\Users\ngmas\Desktop> c:; cd 'c:\Users\ngmas\Desktop'; & 'C:\Users\ngmas\AppData\Local\Programs\Python\Python39\python.exe' 'c:\Users\ngmas\.vscode\extensions\ms-python.python-2020.12.424452561\pythonFiles\lib\python\debugpy\launcher' '57797' '--' 'c:\Users\ngmas\Desktop\image_search.py'
[Box(left=723, top=330, width=123, height=107)]
PS C:\Users\ngmas\Desktop>
엔지엠 에디터에서도 이미지 매치를 해보면 동일한 결과를 확인할 수 있습니다.
이제 찾은 이미지를 클릭하는 코드를 작성합니다.
import pyautogui
import time
p_list = pyautogui.locateAllOnScreen("C:\\Users\\<사용자>\\Desktop\\source.png")
p_list = list(p_list)
p_center = pyautogui.center(p_list[0])
pyautogui.click(p_center)
Ctrl+F5를 눌러서 실행 해보세요.
여러분들도 잘 동작하죠? 위와 같은 방식으로 이미지를 찾아서 클릭하는걸 반복하면 원하는 자동화를 공짜로 쉽게 얻을 수 있게될겁니다. 생각보다 그렇게 어렵지는 않거든요~ 매크로를 만드는게 어려운건 아닙니다. 처음부터 끝까지 많은 로직들의 이미지와 좌표를 확인하고 클릭하거나 키보드가 동작할 수 있도록 코딩하는게 상당한 노가다성 작업입니다. 기본적인 몇가지만 외워서 활용한다면 비싼돈주고 제작을 의뢰하지 않아도 됩니다. 아무튼~ 이렇게 해서 간단하게 파이썬으로 이미지 서치를 만들어봤습니다. 전체 소스는 첨부 파일을 받으세요^^
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
첨부파일
-
image_search.py (200byte)
4회 다운로드 | DATE : 2021-01-01 10:42:11
- 이전글tsc : 이 시스템에서 스크립트를 실행할 수 없으므로... (FullyQualifiedErrorId : UnauthorizedAccess) 21.01.09
- 다음글원드라이브의 엑셀에서 날짜가 맞지 않는 경우 해결 방법. (How to fix the date mismatch in Excel of OneDrive.) 21.01.01
댓글목록
양재동테리님의 댓글
양재동테리 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date
아래와 같은 오류가 발생합니다 ㅠ.ㅜ
C:\Users\count\OneDrive\venv\Scripts\python.exe C:/Users/count/OneDrive/find_1.py
Point(x=799, y=756)
Point(x=843, y=775)
Traceback (most recent call last):
File "C:\Users\count\OneDrive\find_1.py", line 18, in <module>
pag.screenshot('C:/find.png', region = region1)
File "C:\Users\count\OneDrive\venv\lib\site-packages\pyscreeze\__init__.py", line 144, in wrapper
raise PyScreezeException('The Pillow package is required to use this function.')
pyscreeze.PyScreezeException: The Pillow package is required to use this function.
Process finished with exit code 1