바뀜

1,484 바이트 추가됨 ,  2022년 8월 4일 (목) 21:16
편집 요약 없음
1번째 줄: 1번째 줄:  
== 개요 ==
 
== 개요 ==
 
마우스 조작을 위한 라이브러리.
 
마우스 조작을 위한 라이브러리.
 +
 +
pag를 약자로 사용하는 편이다.
 +
 +
=== 설치 ===
 +
pip install pyautogui
    
== 기본 조작 ==
 
== 기본 조작 ==
11번째 줄: 16번째 줄:  
|마우스의 현재좌표 얻기
 
|마우스의 현재좌표 얻기
 
|코드를 실행하면 마우스의 좌표를 지속적으로 표시해준다.
 
|코드를 실행하면 마우스의 좌표를 지속적으로 표시해준다.
 +
주피터노트북 같은 경우 1회만 표시한다.
 
|<syntaxhighlight lang="python">
 
|<syntaxhighlight lang="python">
 
import pyautogui as pag
 
import pyautogui as pag
46번째 줄: 52번째 줄:  
|이미지의 일부를 저장할 수 있다.
 
|이미지의 일부를 저장할 수 있다.
   −
x, y가 좌측 상단이 되게끔 지정하면 된다.
+
x, y가 좌측 상단이 되게끔 지정하면 된다.(좌표값이 없으면 전체 이미지 저장)
|pag.screenshot('파일명.jpg?, region(x, y, width, height))
+
|pag.screenshot('파일명.png, region=(x, y, width, height))
 
|-
 
|-
 
|이미지 서치
 
|이미지 서치
|특정 이미지를 찾아준다.
+
|특정 이미지를 찾아준다. 여러개인 경우도 리스트 안에 Box객체로, 좌측상단의 좌표와 폭, 높이를 반환한다.
confidence는 정확도를 의미한다.
+
Box객체는 pyautogui 안의 center함수로 중심점을 쉽게 찾을 수 있다.(Point객체로 반환한다.)
|pag.locateAllOnScreen('파일명', confidence=0.95)
+
confidence는 정확도를 의미한다. 이 옵션은 opencv가 설치된 경우에만 사용 가능.
 +
 
 +
문제는, 픽셀 하나 옮기는 영역에서도 해당 이미지와 비슷하다고 판단하여 가져와버린다는 점. 정확도를 낮추면서 옆으로 이동한 픽셀은 제거하는 편이 좋겠다.(아, 어차피 클릭할거라면 상관 없나;; 한번만 클릭해야 한다면 조정할 필요가 있다.)
 +
 
 +
(배경의 영향을 받지 않으려면 배경을 포함하지 않는 이미지를 사용해야 한다. 사람 그림을 찾는다면 사람의 얼굴 전체가 아니라, 얼굴형 안쪽의 이목구비만 사용한 이미지.)
 +
|<syntaxhighlight lang="python">
 +
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좌표
 +
 
 +
</syntaxhighlight>
 
|}
 
|}
 
[[분류:라이브러리]]
 
[[분류:라이브러리]]