반응형


이번 영상에서는 윈도우즈 10에서 화면을 캡처한 결과를 입력으로 사용하여 OpenCV Python에서 탬플릿 매칭을 해보았습니다.






# pip install pyautogui
# pip install opencv-python
import cv2 as cv
import numpy as np
import pyautogui



cv.namedWindow("result");
cv.moveWindow("result", 0, 500);

img_piece = cv.imread('dino.png', cv.IMREAD_COLOR)
h,w = img_piece.shape[:2]


while 1:
    pic = pyautogui.screenshot(region=(0, 0, 700, 500))
    img_frame = np.array(pic)
    img_frame  = cv.cvtColor(img_frame, cv.COLOR_RGB2BGR)
    meth = 'cv.TM_CCOEFF'
    method = eval(meth)


    res = cv.matchTemplate(img_piece, img_frame, method)
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
    top_left = max_loc
    bottom_right = (top_left[0] + w, top_left[1] + h)

    cv.rectangle(img_frame, top_left, bottom_right, (0, 255, 0), 2)
    print(max_val, top_left)

    cv.imshow('result', img_frame)
   
    key = cv.waitKey(1)
    if key == 27:
        break



최초작성 2020. 04. 09


반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 ~~

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요 ^^

  1. 도남쓰 2020.07.02 11:19

    java에서 templatematch는 성능이 떨어져서 python을 적용하고 있는데요.

    듀얼모니터에 서브모니터 쪽을 스크린샷 영역을 지정하니 검게만 나오는데 방법이 있을까요?

    범위 지정을 안하니 마찬가지로 메인모니터 쪽만 스크린캡처가 되네요

    + 현재 java 코드로 스크린캡처를 하고 해당 이미지를 python으로 읽어와 templatematch를 하고 있는데요. 이미지가 계속 갱신되면서 'Premature end of JPEG file'가 뜨면서 인식이 단절되고 있습니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.07.02 20:24 신고

      아래 링크를 참고해보세요. 해보지는 않았습니다.

      https://github.com/drov0/python-imagesearch/issues/14#issuecomment-612181350

    • 도남쓰 2020.07.03 13:45

      링크 주신거 해봤는데 64비트 3.7버전에서 호환성 맞추려고 깔아야할 패키지도 많아졌네요.

      단순히 윈도우 설정에서 주모니터 설정만 변경하면 간단하게 해결할 수 있는 문제였네요.

      아무튼 답변 감사합니다.

+ Recent posts