[python] OpenCV를 사용하여 이미지에서 원 감지하기

OpenCV는 컴퓨터 비전 및 이미지 처리를 위한 라이브러리로, 다양한 기능을 제공합니다. 이번 포스트에서는 OpenCV를 사용하여 이미지에서 원을 감지하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

먼저, OpenCV를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.

pip install opencv-python

이미지에서 원 감지하기

다음은 OpenCV를 사용하여 이미지에서 원을 감지하는 예제 코드입니다.

import cv2
import numpy as np

# 이미지 불러오기
image = cv2.imread('image.jpg')

# 그레이스케일로 변환
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 가우시안 블러 적용
blur = cv2.GaussianBlur(gray, (5, 5), 0)

# 허프 변환을 사용하여 원 감지
circles = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT, dp=1, minDist=30, param1=50, param2=30, minRadius=0, maxRadius=0)

# 원 그리기
if circles is not None:
    circles = np.round(circles[0, :]).astype("int")
    for (x, y, r) in circles:
        cv2.circle(image, (x, y), r, (0, 255, 0), 4)

# 결과 출력
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드는 다음과 같은 단계로 동작합니다:

  1. 이미지를 불러옵니다.
  2. 이미지를 그레이스케일로 변환합니다.
  3. 가우시안 블러를 적용합니다.
  4. 허프 변환을 사용하여 원을 감지합니다.
  5. 감지된 원들을 원본 이미지에 그립니다.
  6. 결과를 출력합니다.

이 예제 코드를 실행하면, image.jpg 파일에서 원을 감지하고, 해당 위치에 초록색 원을 그린 결과를 확인할 수 있습니다.

참고 자료: