[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()
위 코드는 다음과 같은 단계로 동작합니다:
- 이미지를 불러옵니다.
- 이미지를 그레이스케일로 변환합니다.
- 가우시안 블러를 적용합니다.
- 허프 변환을 사용하여 원을 감지합니다.
- 감지된 원들을 원본 이미지에 그립니다.
- 결과를 출력합니다.
이 예제 코드를 실행하면, image.jpg
파일에서 원을 감지하고, 해당 위치에 초록색 원을 그린 결과를 확인할 수 있습니다.
참고 자료:
- OpenCV 공식 문서: OpenCV의 자세한 사용법과 기능에 대한 정보를 제공합니다.
- OpenCV-Python 튜토리얼: OpenCV-Python에 대한 자세한 사용 예제와 설명을 제공합니다.