PYTHON 프로그래밍

본문 바로가기
사이트 내 전체검색


PYTHON 프로그래밍
PYTHON 프로그래밍

18. 그래픽 드로잉(Drawing)

페이지 정보

작성자 관리자 댓글 0건 조회 3,671회 작성일 19-09-28 21:18

본문

18. 그래픽 드로잉(Drawing)

그래픽 드로잉(Drawing)

 

영상이나 이미지 위에 그래픽을 그리기 위해 사용합니다. 선, 원, 사각형 등을 그릴 수 있습니다.


소스 :


import numpy as np
import cv2

src = np.zeros((768, 1366, 3), dtype = np.uint8)

cv2.line(src, (100, 100), (1200, 100), (0, 0, 255), 3, cv2.LINE_AA)
cv2.circle(src, (300, 300), 50, (0, 255, 0), cv2.FILLED, cv2.LINE_4)
cv2.rectangle(src, (500, 200), (1000, 400), (255, 0, 0), 5, cv2.LINE_8)
cv2.ellipse(src, (1200, 300), (100, 50), 0, 90, 180, (255, 255, 0), 2)

pts1 = np.array([[100, 500], [300, 500], [200, 600]])
pts2 = np.array([[600, 500], [800, 500], [700, 600]])
cv2.polylines(src, [pts1], True, (0, 255, 255), 2)
cv2.fillPoly(src, [pts2], (255, 0, 255), cv2.LINE_AA)

cv2.putText(src, "leelab.co.kr", (900, 600), cv2.FONT_HERSHEY_COMPLEX, 2, (255, 255, 255), 3)

cv2.imshow("src", src)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

설명 :

 

cv2.line(src, (100, 100), (1200, 100), (0, 0, 255), 3, cv2.LINE_AA)

cv2.line(이미지, (x1, y1), (x2, y2), (B, G, R), 두께, 선형 타입)을 이용하여 선을 그릴 수 있습니다.

(x1, y1)과 (x2, y2)가 연결된 (B, G, R) 색상, 두께 굵기의 선을 그릴 수 있습니다.

선형 타입은 선의 연결성을 의미합니다.

 


cv2.circle(src, (300, 300), 50, (0, 255, 0), cv2.FILLED, cv2.LINE_4)

cv2.circle(이미지, (x, y), 반지름, (B, G, R), 두께, 선형 타입)을 이용하여 원을 그릴 수 있습니다.

(x, y) 중심점을 가지는 반지름 크기로 설정된 (B, G, R) 색상, 두께 굵기의 원을 그릴 수 있습니다.
내부를 채우는 경우, 두께를 cv2.FILLED을 사용하여 내부를 채울 수 있습니다.

 


cv2.rectangle(src, (500, 200), (1000, 400), (255, 0, 0), 5, cv2.LINE_8)

cv2.rectangle(이미지, (x1, y1), (x2, y2), (B, G, R), 두께, 선형 타입)을 이용하여 사각형을 그릴 수 있습니다.

(x1, y1)의 좌측 상단 모서리와 (x2, y2)의 우측 하단 모서리가 연결된 (B, G, R) 색상, 두께 굵기의 사각형을 그릴 수 있습니다.

 


cv2.ellipse(src, (1200, 300), (100, 50), 0, 90, 180, (255, 255, 0), 2)

cv2.ellipse(이미지, (x, y), (lr, sr), 각도, 시작 각도, 종료 각도, (B, G, R), 두께, 선형 타입)을 이용하여 타원을 그릴 수 있습니다.

(x, y)의 중심점을 가지며 중심에서 가장 먼 거리를 가지는 lr과 가장 가까운 거리를 가지는 sr의 타원을 각도만큼 기울어진 타원를 생성합니다.

시작 각도와 종료 각도를 설정하여 호의 형태로 그리며 (B, G, R) 색상, 두께 굵기의 타원을 그릴 수 있습니다.
선형 타입은 설정하지 않아도 사용할 수 있습니다.

 


pts1 = np.array([[100, 500], [300, 500], [200, 600]])
pts2 = np.array([[600, 500], [800, 500], [700, 600]])

poly 함수를 사용하는 경우, numpy 형태로 저장된 위치 좌표들이 필요합니다.

n개의 점이 저장된 경우, n각형을 그릴 수 있습니다.

 


cv2.polylines(src, [pts1], True, (0, 255, 255), 2)

cv2.polylines(이미지, [위치 좌표], 닫힘 유/무, (B, G, R), 두께, 선형 타입 )을 이용하여 다각형을 그릴 수 있습니다.

[위치 좌표]들의 지점들을 가지며 시작점과 도착점이 연결되어있는지 닫힘 유/무를 설정하여 (B, G, R) 색상, 두께 굵기의 다각형을 그릴 수 있습니다.

 


cv2.fillPoly(src, [pts2], (255, 0, 255), cv2.LINE_AA)

cv2.fillPoly(이미지, [위치 좌표], (B, G, R), 두께, 선형 타입 )을 이용하여 내부가 채워진 다각형을 그릴 수 있습니다.

[위치 좌표]들의 지점들을 가지며 (B, G, R) 색상, 두께 굵기의 내부가 채워진 다각형을 그릴 수 있습니다.

 


cv2.putText(src, "YUNDAEHEE", (900, 600), cv2.FONT_HERSHEY_COMPLEX, 2, (255, 255, 255), 3)

cv2.putText(이미지, 문자, (x, y), 글꼴, 글자 크기, (B, G, R), 두께, 선형 타입)을 이용하여 문자를 그릴 수 있습니다.

문자 내용을 가지는 문자열을 (x, y) 위치에 표시합니다. 글꼴와 글자 크기를 가지며 (B, G, R) 색상, 두께 굵기의 문자를 그릴 수 있습니다.
문자의 위치는 좌표의 좌측 하단을 기준으로 글자가 생성됩니다.

 


선형 타입 종류

1.JPG 

 


글꼴 종류

 

2.JPG 

 

추가 옵션

shift : 좌표를 Shift(비트 연산)만큼 이동시켜 표시합니다.

offset : 좌표를 (x, y)만큼 이동시켜 표시합니다.

 


결과 :


 

3.JPG 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.