ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 템플릿 매칭
    스터디그룹/OpenCv 2020. 5. 3. 15:39

    hats.png

     

    hat.png

    템플릿 매칭 원본 이미지 에서 템플릿 이미지와 일치하는 영역을 찾는 알고리즘이다.

     

    <code>

    import cv2

    src = cv2.imread("hats.png", cv2.IMREAD_GRAYSCALE)

    templit = cv2.imread("hat.png", cv2.IMREAD_GRAYSCALE)

    dst = cv2.imread("hats.png")

     

    result = cv2.matchTemplate(src, templit, cv2.TM_SQDIFF_NORMED)

     

    minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result)

    x, y = minLoc

    h, w = templit.shape

     

    dst = cv2.rectangle(dst, (x, y), (x + w, y + h) , (0, 0, 255), 1)

    cv2..imshow("dst", dst)

    cv2..waitKey(0)

    cv2..destroyAllWindows()

     

    결과 이미지

    <설명>

    src = cv2.imread("hats.png", cv2.IMREAD_GRAYSCALE)

    templit = cv2.imread("hat.png", cv2.IMREAD_GRAYSCALE)

    dst = cv2.imread("hats.png")

     

    src(원본 이미지)를 선언한다.

    templit(템플릿 이미지)를 선언한다.

    dst(결과 이미지)를 선언한다.

     

    result = cv2.matchTemplate(src, templit, cv2.TM_SQDIFF_NORMED)

    cv2.matchTemplate은 템플릿과 유사한 이미지 영역을 찾기위해 이용 된다.

     

    minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result)

    x, y = minLoc

    h, w = templit.shape

    최소/최대 위치 함수 cv2.minMaxLoc로 검출값을 찾는다.

    minLoc(최소값),maxLoc(최대값)에 위치한다.

     

    dst = cv2.rectangle(dst, (x, y), (x + w, y + h) , (0, 0, 255), 1)

    결과 dst(결과 이미지)를 표시한다.

     

    템플릿 매칭의 단점은 이미지를 회전하면 이미지를 못 찾는다.

     

    canny edge를 더 공부해야겠다...

     

    작성자: 정혜리

    댓글

Designed by Tistory.