Python OpenCV - 이미지 위에 선, 원, 사각형 그리기
OpenCV는 강력한 이미지 처리 라이브러리로, 다양한 그래픽 요소를 이미지 위에 그릴 수 있는 기능을 제공합니다. 이번 포스팅에서는 OpenCV의 기본적인 도형 그리기 함수인 cv2.line(), cv2.rectangle(), cv2.circle()을 이용하여 이미지 위에 선, 사각형, 원을 그리는 방법을 설명하겠습니다.
1. OpenCV의 도형 그리기 함수 개요
OpenCV에서 제공하는 기본적인 도형 그리기 함수는 다음과 같습니다:
cv2.line(): 선 그리기cv2.rectangle(): 사각형 그리기cv2.circle(): 원 그리기
각 함수의 주요 매개변수는 다음과 같습니다:
| 함수 | 주요 매개변수 | 설명 |
|---|---|---|
cv2.line() |
img, pt1, pt2, color, thickness |
pt1과 pt2 사이에 선을 그림 |
cv2.rectangle() |
img, pt1, pt2, color, thickness |
pt1과 pt2를 대각선으로 하는 사각형을 그림 |
cv2.circle() |
img, center, radius, color, thickness |
중심이 center, 반지름이 radius인 원을 그림 |
2. 예제 코드: 빈 캔버스 생성하기
먼저, 도형을 그릴 빈 캔버스를 생성하는 방법을 살펴보겠습니다.
import cv2
import numpy as np
# 빈 이미지 생성 (검은색 배경)
width, height = 500, 500
canvas = np.zeros((height, width, 3), dtype=np.uint8)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
위 코드에서는 np.zeros()를 이용하여 500x500 크기의 검은색 배경 이미지를 생성합니다. 이제 여기에 도형을 추가해 보겠습니다.
3. 선 그리기 (cv2.line())
# 이미지에 선 그리기
cv2.line(canvas, (50, 50), (450, 50), (0, 255, 0), 5)
cv2.imshow("Line", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
위 코드에서는 (50, 50)에서 (450, 50)까지의 초록색 ((0, 255, 0)) 선을 그립니다. 선의 두께는 5로 설정했습니다.
4. 사각형 그리기 (cv2.rectangle())
# 이미지에 사각형 그리기
cv2.rectangle(canvas, (100, 100), (400, 300), (255, 0, 0), 3)
cv2.imshow("Rectangle", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
위 코드에서는 (100, 100)에서 (400, 300)까지의 파란색 ((255, 0, 0)) 사각형을 그리고, 선의 두께는 3으로 설정하였습니다.
5. 원 그리기 (cv2.circle())
# 이미지에 원 그리기
cv2.circle(canvas, (250, 250), 100, (0, 0, 255), -1)
cv2.imshow("Circle", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
위 코드에서는 중심이 (250, 250), 반지름이 100인 빨간색 ((0, 0, 255)) 원을 그렸습니다. thickness=-1로 설정하면 원 내부가 채워집니다.
6. 여러 개의 도형 함께 그리기
여러 개의 도형을 한 이미지에 함께 그릴 수도 있습니다.
# 캔버스 초기화
canvas = np.zeros((500, 500, 3), dtype=np.uint8)
# 선, 사각형, 원 그리기
cv2.line(canvas, (50, 50), (450, 50), (0, 255, 0), 5)
cv2.rectangle(canvas, (100, 100), (400, 300), (255, 0, 0), 3)
cv2.circle(canvas, (250, 250), 100, (0, 0, 255), -1)
cv2.imshow("Shapes", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
위 코드에서는 선, 사각형, 원을 하나의 이미지에 함께 그려서 출력합니다.
7. 마무리
이번 포스팅에서는 OpenCV의 기본적인 도형 그리기 함수들을 사용하여 선, 사각형, 원을 그리는 방법을 배웠습니다. OpenCV에서는 이 외에도 다각형을 그리는 cv2.polylines(), 텍스트를 추가하는 cv2.putText() 등의 다양한 기능이 제공됩니다. 이를 활용하여 이미지 처리 및 GUI 애플리케이션을 개발할 수 있습니다.
'Python > OpenCV' 카테고리의 다른 글
| OpenCV 이미지 히스토그램 분석 (cv2.calcHist()) (0) | 2025.11.07 |
|---|---|
| OpenCV 이미지 위에 텍스트 추가하기 (cv2.putText()) (0) | 2025.11.06 |
| OpenCV를 활용한 엣지 검출 (Canny, Sobel, Laplacian) (0) | 2025.11.04 |
| OpenCV를 활용한 이미지 필터링 (블러링, 가우시안 필터, 샤프닝) (0) | 2025.11.03 |
| OpenCV 이미지 밝기 및 명암 조절 (cv2.addWeighted()) (0) | 2025.11.02 |