[python] OpenCV를 사용하여 이미지에서 윤곽선 찾기

이미지 처리를 위해 많은 도구와 라이브러리가 있지만, OpenCV는 그 중에서도 가장 인기 있는 라이브러리 중 하나입니다. 이번 포스팅에서는 OpenCV를 사용하여 이미지에서 윤곽선을 찾는 방법에 대해 알아보겠습니다.

개요

윤곽선은 이미지에서 물체의 가장자리를 표현하는 것으로, 주로 이미지 분석 및 컴퓨터 비전 작업에 사용됩니다. OpenCV는 이미지 처리 작업을 위한 많은 함수와 알고리즘을 제공하며, 이 중에서도 윤곽선을 찾는 함수인 findContours()를 사용하여 윤곽선을 추출할 수 있습니다.

코드 예시

다음은 OpenCV를 사용하여 이미지에서 윤곽선을 찾는 간단한 코드 예시입니다.

import cv2

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

# 이미지를 흑백으로 변환
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 이미지에서 윤곽선 찾기
contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 윤곽선을 원본 이미지에 그리기
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)

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

코드 설명

  1. cv2.imread() 함수를 사용하여 이미지를 로드합니다.
  2. cv2.cvtColor() 함수를 사용하여 이미지를 흑백으로 변환합니다.
  3. cv2.findContours() 함수를 사용하여 이미지에서 윤곽선을 찾습니다. RETR_EXTERNAL 파라미터는 가장 외각의 윤곽선만 반환하도록 설정하고, CHAIN_APPROX_SIMPLE 파라미터는 윤곽선을 근사화하여 저장합니다.
  4. cv2.drawContours() 함수를 사용하여 원본 이미지에 윤곽선을 그립니다. -1은 모든 윤곽선을 그리라는 의미이며, (0, 255, 0)은 윤곽선을 그릴 색상을 의미합니다.
  5. cv2.imshow() 함수를 사용하여 결과 이미지를 출력합니다.
  6. cv2.waitKey(0)을 사용하여 키보드 입력을 기다립니다.
  7. cv2.destroyAllWindows() 함수를 사용하여 모든 창을 닫습니다.

결론

OpenCV를 사용하여 이미지에서 윤곽선을 찾는 방법에 대해 알아보았습니다. findContours() 함수를 사용하여 이미지에서 윤곽선을 추출하고, drawContours() 함수를 사용하여 윤곽선을 원본 이미지에 그릴 수 있습니다. 이를 활용하여 다양한 이미지 처리 작업을 수행할 수 있습니다.

참고: