좌표로 도형과 글자 그리기
실습 준비
import cv2 as cv
from PIL import Image
image = cv.imread("balloon.webp")
height, width, _ = image.shape
관심 영역의 위치와 크기를 좌표로 정의
x = width // 2 # ROI의 시작을 가로 중앙에 배치
y = height // 3 # ROI의 시작을 세로 1/3 지점에 배치
w = width // 4 # 전체 가로의 1/4을 ROI 너비로 사용
h = height // 5 # 전체 세로의 1/5를 ROI 높이로 사용
복사본 만들기
cv.rectangle(), cv.circle(), cv.putText()는 전달한 배열을 직접 수정. 원본을 보존하려면 그리기 전에 복사본 생성.
annotated = image.copy()
사각형 그리기
OpenCV 그리기 함수의 좌표 순서는 (x, y). NumPy 인덱싱의 [y, x]와 구분.
cv.rectangle(
annotated,
(x, y),
(x + w - 1, y + h - 1), # ROI에 포함되는 오른쪽 아래 꼭지점
(0, 255, 0), # BGR의 초록
3, # 테두리 두께
)
원 그리기
cv.circle(
annotated,
(x + w // 2, y + h // 2),
6, # ROI 중심을 표시할 반지름
(0, 0, 255), # BGR의 빨강
-1, # 원 내부를 채움
)
텍스트 쓰기
cv.putText(
annotated,
"ROI",
(x, y - 10), # ROI 테두리 위쪽에 글자를 배치
cv.FONT_HERSHEY_SIMPLEX,
0.8, # 글자 크기
(0, 255, 0), # BGR의 초록
2, # 글자 두께
cv.LINE_AA, # 계단 현상을 줄이는 선 유형
)
Image.fromarray(cv.cvtColor(annotated, cv.COLOR_BGR2RGB))

초록색 사각형은 관심 영역, 빨간 점은 중심 좌표, ROI는 영역 이름을 표시.