[OpenCV] 02-3. Drawing Functions in OpenCV
🐍Python/OpenCV

[OpenCV] 02-3. Drawing Functions in OpenCV

728x90
반응형

<2-3. Drawing Functions in OpenCV>

서로 다른 기하학적인 모양을 OpenCV를 이용해서 그려볼 것이다.

  • cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText() etc

Code

공통적인 arguments를 사용한다.

  • img : 모양을 그려넣고 싶은 이미지이다.
  • color : 모양의 색깔. BGR로 나타낸다. Blue = (255,0,0), 흑백의 경우 그냥 scalar 값을 주면 된다.
  • thickness : 선이나 원의 굵기. -1이 원에 주어지면 모양을 채울 것이다. 기본은 1이다.
  • lineType : 라인의 형태.

Drawing Line

선을 그리기 위해서, 선의 시작과 끝의 좌표를 주어야한다. 검은 이미지를 만들고 왼쪽 위에서 오른쪽 아래로 이어지는 파란 선을 만들 것 이다.

import numpy as np
import cv2

# 검정 이미지 만들기
img = np.zeros((512,512,3), np.uint8)

# 대각 파란 선을 5의 두께로 그리기
img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

plt.imshow(img[:,:,::-1])
plt.show()



Drawing Rectangle

img2 = cv2.rectangle(img,(384,0),(510,128),(255,0,0),3) 

plt.imshow(img2[:,:,::-1])
plt.show()


Drawing Circle

img3 = cv2.circle(img2,(447,63),63,(0,225,0),-1)

plt.imshow(img3[:,:,::-1])
plt.show()

직사각형의 중심부를 잡고 반지름을 63으로 정했다.


Drawing Ellipse

img4 = cv2.ellipse(img3,(256,256),(100,50),0,0,180,255,-1)

plt.imshow(img4[:,:,::-1])
plt.show()

먼저 중심 좌표를 찍어준다. 그 다음은 axis length (major axis length, minor axis length)를 나타내고, angle, StartAngle, EndAngle, Color 순서이다.


Drawing Polygon

다각형을 그리기 위해서는 꼭짓점 좌표를 필요로한다. 이 array의 shape을 ROWSx1x2로 만들어준다. 숫자는 Int32이어야 한다. 4개의 꼭짓점으로 노랗고 작은 다각형을 그려보자.

vertices = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
vertices = vertices.reshape((-1,1,2))
img5 = cv2.polylines(img4,[vertices],True,(0,255,255))

plt.imshow(img5[:,:,::-1])
plt.show()


True가 아닌 False를 입력한다면, 닫힌 모양이 아닌 모든 점과 연결된 polyline이 나온다.

Adding Text to Images

  • 입력하고 싶은 텍스트 데이터
  • 입력하고 싶은 위치 좌표
  • 폰트 타입
  • 폰트 크기
  • 색, 두께, 선 형태 같은 일반적인 것. 잘 보이기 위해서는 lineType = cv2.LINE_AA 를 추천한다.
font = cv2.FONT_HERSHEY_SIMPLEX
img6 = cv2.putText(img5, 'OpenCV',(10,500),font,4,(255,255,255),2,cv2.LINE_AA)

plt.imshow(img6[:,:,::-1])
plt.show()

먼저 이미지를 고르고, 입력하고 싶은 텍스트를 쓴다. 그리고 좌측 아래 좌표를 입력하고, 폰트, 폰트 크기, 색, 두께를 차례로 입력한다.



728x90
반응형