Pyautogui
둘러보기로 가기
검색하러 가기
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좌표
|