프로그래밍/OpenCV

[OpenCV-Python] 그리기 함수 사용하기(직선, 직사각형, 원, 타원)

지원지원 2021. 1. 20. 22:26

 

# 기하학적 모양을 그리는 방법

#cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText()

 

1. 선 그리기

import numpy as np
import cv2

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

#5px의 굵기로 파란 선 만들기
img = cv2.line(img, (0,0), (511,511),(255,0,0), 5)

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

img = cv2.line(img, (0,0), (511,511),(255,0,0), 5)

  • img : 이미지
  • (0, 0) : 시작점 좌표
  • (511, 511) : 끝점 좌표
  • (255, 0, 0) : 색깔 BGR (OpenCV에서 BGR로 다룸)
  • 5 : 픽셀 값 (선 굵기)

 

결과값

흠..?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이런거구나

 

2. 직사각형 그리기

import numpy as np
import cv2

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

#3px의 굵기로 초록색 선 만들기
img = cv2.line(img, (384,0), (510,128),(0,255,0), 3)

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

  • img : 이미지
  • (384, 0) : 시작점 좌표 ==> 왼쪽 위 모서리
  • (510, 128) : 끝점 좌표 ==> 오른쪽 하단 모서리
  • (0, 255, 0) : 색깔 BGR (OpenCV에서 BGR로 다룸)
  • 5 : 픽셀 값 (선 굵기)

 

결과값

 

 

3. 원 그리기

import numpy as np
import cv2

img = np.zeros((512,512,3), np.uint8)

img = cv2.circle(img, (250,250), 63, (0,0, 255), -1)

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

img = cv2.circle(img, (250,250), 63, (0,0, 255), -1)

  • img : 이미지
  • (250, 250) : 중심점
  • 63 : 반지름
  • (0, 0, 255) : 색깔 BGR (OpenCV에서 BGR로 다룸)
  • -1 : 픽셀 값 (선 굵기) ==> 음수니까 원 안에 색 채우기

 

결과값

 

 

3. 타원 그리기

import numpy as np
import cv2

img = np.zeros((512,512,3), np.uint8)

img = cv2.ellipse(img, (250,250), (100, 50),0, 0, 180, 255 -1)

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

img = cv2.ellipse(img, (250,250), (100, 50),0, 0, 180, 255 -1)

  • img : 이미지
  • (250, 250) : 중심점
  • (100, 50) : 타원의 장축과 단축
  • 0 : 회전각도 ==> 시계방향으로의 타원의 회전 각도
  • 0 : 시작각도
  • 180 : 종료각도
  •  255 : 색깔 == (250, 0, 0)
  • -1 : 채우기

 

시작각도 0이고 종료각도 360이었으면 타원 전체 그릴 수 있었음!

※ 시작 각도, 종료 각도가 원 기준이 아닌 거 알아두기