관리 메뉴

솜씨좋은장씨

[Python] OpenCV를 활용하여 도형을 그리는 다양한 방법! 본문

Programming/Python

[Python] OpenCV를 활용하여 도형을 그리는 다양한 방법!

솜씨좋은장씨 2021. 7. 8. 19:39
728x90
반응형

이 글에서는 opencv를 활용하여 도형을 그리는 방법에 대해서 적어보려합니다.

0. opencv 설치하고 import 하기

$ pip install opencv-python
import cv2

1. 선 그릴 이미지 불러오기  or  흰 바탕 만들기

1-1. 이미지 불러오기

background_img = cv2.imread("./filename.png")

cv2의 imread를 활용하여 이미지를 불러옵니다.

 

1-2. 흰 바탕 만들기

먼저 numpy를 설치합니다.

$ pip install numpy

흰 바탕은 numpy의 zeros를 활용하여 만들어줍니다.

import numpy as np

설치한 numpy를 import 하고

background_img = np.zeros(shape=(500, 300, 3), dtype=np.uint8) + 255

numpy의 zeros를 활용하여 0으로 채워진 다차원 배열을 만들어줍니다. 

2. 원하는 색 값 설정하기

기본적으로 R, G, B 값 이 세가지 값을 조합하여 여러가지 색조합을 만듭니다.

색조합을 만들때 ( 파랑, 초록, 빨강 ) ( B, G, R ) 순서로 값을 설정합니다.

각 값은 0 ~ 255 사이의 값을 가집니다.

blue_color = (255, 0, 0)
green_color = (0, 255, 0)
red_color = (0, 0, 255)

3. 선 그리기

선 그리기는 cv2라이브러리의 line를 활용하여 그립니다.

line_img = cv2.line(img=background_img, pt1=(10, 10), pt2=(200, 200), color(0, 0, 255), thickness=2)

만약 내가 (10, 10) 위치에서 (200, 200) 까지 이어지는 2 두께의 파란색 선을 그린다! 하면 위와 같습니다.

 

line에 들어가는 변수를 하나씩 살펴보면 다음과 같습니다.

구분 img pt1 pt2 color thickness
내용 이미지 선의 좌측 점 선의 우측 점 색 ( B, G, R ) 선의 두께

4. 사각형 그리기

사각형 그리기는 cv2라이브러리의 rectangle을 활용하여 그립니다.

rectangle_img = cv2.rectangle(img=background_img, pt1=(10, 10), pt2=(200, 200), color=(255, 0, 0), thickness=1)

만약 좌측 위 꼭지점이 (10, 10) 위치 우측 아래 꼭지점이 (200, 200) 까지 이어지는 

190 X 190 크기 2 두께의 파란색 선을 그린다! 하면 위와 같습니다.

 

rectangle에 들어가는 변수를 하나씩 살펴보면 다음과 같습니다.

구분 img pt1 pt2 color thickness
내용 이미지 사각형의 왼쪽 위점 사각형의 우측 아래점 색 ( B, G, R ) 선의 두께
TypeError: rectangle() missing required argument 'rec' (pos 2)

위와 같은 오류가 발생하면 아래의 링크를 참고해주세요.

2021.08.23 - [Programming/Python] - [Python] OpenCV TypeError: rectangle() missing required argument 'rec' (pos 2) 해결방법

5. 원 그리기

원 그리기는 cv2라이브러리의 circle을 활용하여 그립니다.

circle_img = cv2.circle(img=background_img, center=(100, 100), radius=50, color=(0, 0, 255), thickness=2)

만약 중심점이 (10, 10) 위치 반름이 50이면서 두께가 2인 파란색 선을 그린다! 하면 위와 같습니다.

 

circle 에 들어가는 변수를 하나씩 살펴보면 다음과 같습니다.

구분 img center radius color thickness
내용 이미지 원의 중심점 반지름 색 ( B, G, R ) 선의 두께

 

opencv를 활용하여 이미지 위에 다양한 도형을 그리는 방법을 정리해 보았습니다.

앞으로 선이나 박스를 추출하는 방법에 대해서도 정리해보고자 합니다.

읽어주셔서 감사합니다.

Comments