[opencv-python] 도형 그리기

2019. 7. 1. 21:46Python-이론/python-opencv

저번에는 비디오로 촬영하고 저장하는 과정을 해보았습니다. 이번에는 검은화면에 도형을 그려보겠습니다. ㄴㅇㅁㄹ

 

코드

import numpy as np
import cv2


def drawing():
    img = np.zeros((512, 512, 3), np.uint8)
    img.fill(100)

    cv2.line(img, (243, 128), (511, 511), (255, 125, 125), 5)  # BGR
    cv2.line(img, (243, 128), (0, 511), (255, 125, 125), 5)
    cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
    cv2.circle(img, (250, 400), 63, (160, 125, 255), -1)
    cv2.ellipse(img, (248, 256), (78, 50), 0, 0, 180, (255, 0, 0), -1)

    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img, "Feliz", (100, 100), font, 4, (200, 200, 200), 2)

    cv2.imshow("figure Test", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


drawing()

코드 설명

img = np.zeros((512, 512, 3), np.uint8)
512, 512, 3 사이즈의 0으로 채워진 3차원 배열을 만들겠다는 뜻입니다.  이때 모든 원소는 (0, 0, 0)의 형태로 이루어져있다. 모든 배열이 0으로 이루어 져있어서 검은 화면이 됩니다. 출력해보면 아래와 같이 됩니다. 

img.fill(100)
모든 배열의 값을 100으로 채웁니다. 그래서 검은 화면이 아니라 회색화면으로 보이게 됩니다. 

cv2.line(img, (243, 128), (511, 511), (255, 125, 125), 5)

그림판 243, 128을 출발점으로 511, 511까지 255, 125, 125의 색으로 두께 5의 직선을 그읍니다. 

line(그림판, (x출발점, y출발점), (x 종료점, y 종료점), (b, g, r), 두께)

 

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

그림판 왼쪽 상단 꼭짓점 (384,0) 에서 왼쪽 하단 (510, 128)을 꼭짓점으로 하는 직사각형을 만듭니다. 색은 (0, 255, 0)으로 하고 두께는 3으로 합니다. 
rectangle(그림판, (x출발점, y출발점), (x 종료점, y 종료점), (b, g, r), 두께)

 

cv2.circle(img, (250, 400), 63, (160, 125, 255), -1)

(250, 400)은 중점을 의미합니다.

63은 반지름을 의미합니다.

4번째 인자는 색이고

5번째 인자의 -1이면 원에 색을 채우고 인자를 비워 두면 가운데가 비어 있는대로 원을 그립니다. 

circle(그림판, (x 중점, y 중점), 반지름, (b, g, r), 속을 채울 것인지 비울 것인지 -1이면 속이 채워짐)

 

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

타원을 그립니다. 

(256, 256)은 타원의 중심을 의미합니다. 

(100, 50)은 각각 장축과 단축의 1/2의 길이를 의미합니다. 

0, 0, 180은 타원의 기울기 각도(타원이 기울어진다), 타원 호를 그리는 시작 각도(그려지는 시작 각도를 정할 수 있다.), 타원 호를 그리는 끝각도(360이면 전체 다 그려진다.) 

 

cv2.putText(img, "Feliz", (100, 100), font, 4, (200, 200, 200), 2)

Feliz는 작성될 문자열을 의미합니다. 

(100, 100)은 그려질 지정된 위치를 의미합니다. 

font는 위에서 설정한 폰트를 의미합니다. 

4는 글자의 크기를 의미합니다.

(200, 200, 200)은 BGR로 글자의 색을 의미합니다. 

2는 글자의 굵기를 의미합니다. 

 

결과