반응형
도형 그리기
이미지처리를 하다보면 시각화를 위해 도형을 그리는 작업을 할 때가 있다. 가장 많이 사용하는것은 직선, 사각형, 원, 다각형이 있다. 하나씩 살펴보도록 한다(중복되는 인자는 설명 생략).
직선 그리기
cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
img
: 직선을 그릴 이미지pt1
,pt2
: 직선의 시작점, 끝점. x,y 좌표를 튜플형태로 입력받는다.color
: 선의 색상. 순서는 (B, G, R) 튜플을 입력받는다. img가 Gray Scale이라면 0~255사이의 정수값을 입력받는다.thickness
: 선의 두께. 기본값은 1이다.lineType
: 선의 종류. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA가 있으면 기본값은 cv2.LINE_8이다. AA는 안티에일리어싱으로써 선을 부드럽게 표현한다.
img = np.zeros((300, 300, 3), dtype=np.uint8)
cv2.line(img, (50, 50), (100, 50), (255, 0, 0), 3)
cv2.line(img, (50, 60), (100, 120), (0, 128, 0), 1)

사각형 그리기
cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shfit=None)
cv2.rectangle(img, rec, color, thickness=None, lineType=None, shfit=None)
pt1
,pt2
: 사각형의 좌상단, 우하단 꼭지점 좌표. x,y 좌표를 튜플형태로 입력받는다.rec
: 사각형의 좌상단, 가로길이, 세로길이를 나타내는 정보. x,y,w,h 형태의 튜플로 입력 받는다.
img = np.zeors((300, 300, 3), dtype=np.uint8)
cv2.rectangle(img, (50, 50), (200, 200), (255, 0, 0), 3)
cv2.rectangle(img, (70, 70, 180, 180), (0, 128, 0), -1) # thinckness를 -1로 하면 내부를 채운다.

원 그리기
cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None)
center
: 원의 중심 좌표. x, y 튜플형태로 입력 받는다.radius
: 원의 반지름.
img = np.zeros((300, 300, 3), dtype=np.uint8)
cv2.circle(img, (150, 150), 50, (255, 255 0), -1, cv2.LINE_AA) # 원의 경계면이 더욱 부드러워 진다.
cv2.circle(img, (150, 150), 100, (255, 255, 0), 2)

다각형 그리기
cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shfit=None)
pts
: 다각형 외곽점의 좌표 배열. Numpy 리스트 형태로 입력 받는다.isClosed
: 페곡선인지 아닌지 결정. 폐곡선이면 True.
img = np.zeros((300, 300, 3), dtype=np.uint8)
pts = np.array([[70, 70], [120, 70], [170, 220], [220, 220]])
cv2.polylines(img, [pts], True, (255, 0, 0), 2, cv2.LINE_AA)

문자열 그리기
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None)
text
: 출력할 문자열org
: 문자열이 출력될 위치정보를 가진 좌표. x, y 튜플형태로 입력 받는다.fontFace
: 폰트종류.cv2.FONT_HERSHEY_
에 여러 종류가 있다.fontScale
: 폰트 크기.
img = np.zeros((300, 300, 3), dtype=np.uint8)
text = 'Hello, OpenCV'
cv2.putText(img, text, (60, 150), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 255, 255), 1, cv2.LINE_AA)

반응형
최근댓글