▪ 그리기 함수 사용 시 주의할 점
• 그리기 알고리즘을 이용하여 영상의 픽셀 값 자체를 변경
→ 원본 영상이 필요하면 copy를 통해 그리기 & 출력
• 그레이스케일 영상에는 컬러로 그리기 불가
→ cv2.cvtColor() 함수로 BGR 컬러 영상으로 변환한 후 그리기 함수 호출
1. 직선
cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) -> img
• img: 그림을 그릴 영상
• pt1, pt2: 직선의 시작점과 끝점. (x, y) 튜플
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값
• thickness: 선 두께. 기본값은 1
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 (Default cv2.LINE_8)
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0
2. 사각형
cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) -> img
cv2.rectangle(img, rec, color, thickness=None, lineType=None, shift=None) -> img
• img: 그림을 그릴 영상
• pt1, pt2: 사각형의 두 꼭지점 좌표. (x, y) 튜플.
• rec: 사각형 위치 정보. (x, y, w, h) 튜플
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 (Default cv2.LINE_8)
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0
3. 원
cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None) -> img
• img: 그림을 그릴 영상
• center: 원의 중심 좌표. (x, y) 튜플
• radius: 원의 반지름
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 (Default cv2.LINE_8)
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0
4. 다각형
cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None) -> img
• img: 그림을 그릴 영상
• pts: 다각형 외곽 점들의 좌표 배열. numpy.ndarray의 리스트
- (e.g.) [np.array([[10, 10], [50, 50], [10, 50]], dtype=np.int32)]
• isClosed: 폐곡선 여부. True 또는 False 지정.
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값.
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움.
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 (Default cv2.LINE_8)
• shift: 그리기 좌표 값의 축소 비율 (Default 0)
5. 문자열
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None,
lineType=None, bottomLeftOrigin=None) -> img
• img: 그림을 그릴 영상
• text: 출력할 문자열
• org: 영상에서 문자열을 출력할 위치의 좌측 하단 좌표. (x, y) 튜플
• fontFace: 폰트 종류. cv2.FONT_HERSHEY_ 로 시작하는 상수 중 선택
• fontScale: 폰트 크기 확대/축소 비율
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택
• bottomLeftOrigin: True이면 영상의 좌측 하단을 원점으로 간주 (Default False)
import numpy as np
import cv2
import os
os.chdir('C:\coding\OpenCV\ch02') # can't open/read file: check file path/integrity 오류 해결을 위해 경로 설정
img = np.full((400, 400, 3), 255, np.uint8)
# 직선
cv2.line(img, (50, 50), (200, 50), (0, 0, 255), 5)
cv2.line(img, (50, 60), (150, 160), (0, 0, 128))
# 사각형
cv2.rectangle(img, (50, 200, 150, 100), (0, 255, 0), 2)
cv2.rectangle(img, (70, 220), (180, 280), (0, 128, 0), -1) # 사각형 내부 채움
# 원
cv2.circle(img, (300, 100), 30, (255, 255, 0), -1, cv2.LINE_AA) # 원 내부 채움
cv2.circle(img, (300, 100), 60, (255, 0, 0), 3, cv2.LINE_AA)
# 다각형
pts = np.array([[250, 200], [300, 200], [350, 300], [250, 300]])
cv2.polylines(img, [pts], True, (255, 0, 255), 2)
text = 'Hello? OpenCV ' + cv2.__version__
cv2.putText(img, text, (50, 350), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
(0, 0, 255), 1, cv2.LINE_AA)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
- 실행 결과 :

'OpenCV' 카테고리의 다른 글
| OpenCV 키보드, 마우스 이벤트 처리 (0) | 2024.03.16 |
|---|---|
| OpenCV 카메라와 동영상 처리(cv2.VideoCapture, cv2.VideoWriter) (0) | 2024.03.15 |
| OpenCV 마스크 연산& ROI (0) | 2024.03.15 |
| OpenCV 이미지(영상)의 생성, 복사, 부분 영상 추출 (1) | 2024.03.15 |
| OpenCV 이미지 속성, 크기, 픽셀 값 참조 (3) | 2024.03.15 |