반응형

도형 그리기

이미지처리를 하다보면 시각화를 위해 도형을 그리는 작업을 할 때가 있다. 가장 많이 사용하는것은 직선, 사각형, 원, 다각형이 있다. 하나씩 살펴보도록 한다(중복되는 인자는 설명 생략).

 

직선 그리기

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)

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기