Pyautogui

Pywiki
Sam (토론 | 기여)님의 2022년 8월 4일 (목) 21:16 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

1 개요[편집 | 원본 편집]

마우스 조작을 위한 라이브러리.

pag를 약자로 사용하는 편이다.

1.1 설치[편집 | 원본 편집]

pip install pyautogui

2 기본 조작[편집 | 원본 편집]

의도 설명 방법
마우스의 현재좌표 얻기 코드를 실행하면 마우스의 좌표를 지속적으로 표시해준다.

주피터노트북 같은 경우 1회만 표시한다.

import pyautogui as pag

while True:
    x, y = pag.position()
    print('x: %s', y:%s'%(x,y))
마우스 옮기기 해당 좌표로 duration이 걸려 이동하게끔.(초단위)

왼쪽 화면 밖으로 나가게 하면 에러가 나며 꺼진다.

import pyautogui as pag

pag.moveTo(x, y, duration)
마우스 클릭 좌클릭. 누른 상태에서 이동시킨다면 드래그를 구현할 수도 있겠다.
pag.mouseDown()
# 보통 중간에 time.sleep()을 주곤 한다.
pag.mouseUp()

3 이미지 관련[편집 | 원본 편집]

의도 설명 방법
스크린샷 저장 이미지의 일부를 저장할 수 있다.

x, y가 좌측 상단이 되게끔 지정하면 된다.(좌표값이 없으면 전체 이미지 저장)

pag.screenshot('파일명.png, region=(x, y, width, height))
이미지 서치 특정 이미지를 찾아준다. 여러개인 경우도 리스트 안에 Box객체로, 좌측상단의 좌표와 폭, 높이를 반환한다.

Box객체는 pyautogui 안의 center함수로 중심점을 쉽게 찾을 수 있다.(Point객체로 반환한다.) confidence는 정확도를 의미한다. 이 옵션은 opencv가 설치된 경우에만 사용 가능.

문제는, 픽셀 하나 옮기는 영역에서도 해당 이미지와 비슷하다고 판단하여 가져와버린다는 점. 정확도를 낮추면서 옆으로 이동한 픽셀은 제거하는 편이 좋겠다.(아, 어차피 클릭할거라면 상관 없나;; 한번만 클릭해야 한다면 조정할 필요가 있다.)

(배경의 영향을 받지 않으려면 배경을 포함하지 않는 이미지를 사용해야 한다. 사람 그림을 찾는다면 사람의 얼굴 전체가 아니라, 얼굴형 안쪽의 이목구비만 사용한 이미지.)

p_list = pag.locateAllOnScreen('파일명', confidence=0.95)
p_list = list(p_list) # 리스트로 바꾸어주어야 내용을 볼 수 있다.

#-----중심점 찾기.
for p in p_list:
    p_center = pag.center(p)
    # 아래는 특정 화면에서만 찾게 할 경우. 필터링.
    if p_center[0] > 관찰할좌측x좌표 and p_center[0] < 관찰할우측x좌표 and \
    p_center[1] > 관찰할하단y좌표 and p_center[1] < 관찰할상단y좌표