[python] OpenCV를 사용하여 이미지에서 템플릿 매칭하기

이미지 처리 및 컴퓨터 비전 작업에 가장 일반적으로 사용되는 라이브러리 중 하나인 OpenCV를 사용하여 이미지에서 특정 템플릿을 찾는 방법을 알아보겠습니다. 템플릿 매칭은 이미지 내에서 특정한 패턴이나 객체를 검출하는 데 사용됩니다.

1. 필요한 모듈 가져오기

먼저, 필요한 모듈을 가져와야 합니다. OpenCV를 사용하기 위해 cv2 모듈을 import합니다.

import cv2

2. 이미지와 템플릿 로드하기

이미지와 찾고자 하는 템플릿을 로드해야 합니다. 여기서는 이미지와 템플릿 이미지를 파일로부터 로드하는 예제를 보여줍니다.

# 이미지 로드
image = cv2.imread('image.jpg')

# 템플릿 이미지 로드
template = cv2.imread('template.jpg')

3. 템플릿 매칭 수행하기

이제 cv2.matchTemplate() 함수를 사용하여 이미지에서 템플릿 매칭을 수행할 수 있습니다. 이 함수는 이미지와 템플릿 이미지를 입력으로 하고, 매칭 결과를 반환합니다.

# 템플릿 매칭 수행
result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)

4. 매칭 결과 확인하기

매칭 결과를 확인하기 위해 cv2.minMaxLoc() 함수를 사용하여 매칭 위치를 찾을 수 있습니다.

# 매칭 위치 찾기
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

# 매칭 위치 표시
top_left = max_loc
bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0])
cv2.rectangle(image, top_left, bottom_right, (0,255,0), 2)

5. 결과 이미지 출력하기

마지막으로, 결과 이미지를 출력합니다.

# 결과 이미지 출력
cv2.imshow('Matching Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위의 코드를 실행하면 원본 이미지에서 템플릿과 일치하는 부분을 찾아 표시한 결과를 볼 수 있습니다.

이상으로, OpenCV를 사용하여 이미지에서 템플릿 매칭을 수행하는 방법에 대해 알아보았습니다. 템플릿 매칭은 컴퓨터 비전 작업에서 많이 활용되며, 다양한 응용 분야에서 유용하게 사용될 수 있습니다.

참고 자료