안녕하세요 ~
포스팅 하다 보니, 시간 가는 줄 모르겠네요 ...
이별하고 힘들었는데, 유익하고 좋은 취미를 찾아서 다행이에요 ^.^
이번 포스팅에서는 Open CV로 도형을 그려보는 방법에 대해서 포스팅 해보겠습니다.
1. 빈 스케치북 만들기
: 도형을 그리려면, 우선 빈 스케치북 부터 만들어야겠죠?
import cv2
import numpy as np
img = np.zeros((480, 640, 3), dtype = uint8) #만들고자 하는 크기 만큼의 numpy array만들기 (세로, 가로, 높이)를 튜플로
img[:] = (255, 255, 255) #img[:] 모든 범위에 대해서 (255, 255, 255) bgr 흰색
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
<- 요로코롬 흰 스케치북이 생깁니다.
2. 일부 영역 색칠하기
import cv2
import numpy as np
img = np.zeros((500, 500, 3), dtype = np.uint8)
img[100:200, 200:300] = (0, 0, 0) # [세로: 가로] 로 색깔 지정 가능, bgr(0, 0, 0)이면 검은색
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 직선 그리기
: 직선에는 3가지 종류_line type이 있음
(1) cv2.LINE_4 : 상하좌우 4방항으로 연결된 선
(2) cv2.LINE_8 : 대각선을 포함한 8방향으로 연결된 선 - 기본 값
(3) cv2.LINE_AA : 부드러운 선, anti-aliasing
import cv2
import numpy as np
img = np.zeros((480, 640, 3), dtype = np.uint8)
COLOR = (0, 255, 255) #yellow
THICKNESS = 3
#cv2.line(그림 위치, 시작점, 끝점, 선 색깔, 두께, 선종류)
cv2.line(img, (50, 100), (400, 50), COLOR, THICKNESS, cv2.LINE_8)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
4. 원 그리기
import cv2
import numpy as np
img = np.zeros((480, 640, 3), dtype = np.uint8)
COLOR = (0, 255, 255) #yellow
RADIUS = 50 # RADIUS 반지름 지정해주기
THICKNESS = 3
# cv2.line(그림 위치, 원의 중심, 반지름, 색깔, 두께, 선 종류)
cv2.line(img, (200, 100), RADIUS, COLOR, THICKNESS, cv2.LINE_AA)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 사각형 그리기
import cv2
import numpy as np
img = np.zeros((480, 640, 3), dtype = np.uint8)
COLOR = (0, 255, 0) #green
THICKNESS = 3
#cv2.line(그림 위치,왼쪽 위, 오른쪽 위, 색깔, 두께)
cv2.line(img, (50, 100), (400, 50), COLOR, THICKNESS)
#꽉차 있는 사각형 그리고 싶을때, THICKENSS대신 cv2.FILLED를 파라미터로 넘겨줌
cv2.line(img, (50, 100), (400, 50), COLOR, cv2.FILLED)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
6. 다각형 그리기
import cv2
import numpy as np
img = np.zeros((480, 640, 3), dtype = np.uint8)
COLOR = (0, 0, 255)
THICKNESS = 3
#지나고자 하는 점들 = 좌표를 넘파이 array로 지정해줌, 이때 중요한건 [[]] 괄호 x 괄호라는 것 !
pts1 = np.array([[100, 100], [200, 100], [100, 200]])
pts2 = np.array([[200, 100], [300, 100], [300, 200]])
pts3 = np.array([[200, 100], [250, 150], [200, 200], [150, 150]])
# cv2.polylines(그릴 위치, [좌표], 닫힘 여부, 색깔, 두께, 선 종류
cv2.polylines(img, [pts1, pts2], True, COLOR, THICKNESS, cv2.LINE_AA)
# cv2.polylines(그릴 위치, [좌표], 닫힘 여부, 색깔, 두께, 선 종류 : 원하는 지점을 정의하고 리스트에 넣기
cv2.fillPoly(img, [pts1, pts2, pts3], COLOR, THICKENSS, cv2.LINE_AA)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
'파이썬 python > 파이썬 활용' 카테고리의 다른 글
[python] 파이썬 영어 문서를 한글로 번역하는 자동화 프로그램 만들기 (1) | 2022.10.02 |
---|---|
[python] 오토마우스를 활용한 웹페이지 자동화 프로그램 만들기 (1) | 2022.09.30 |
[python] 영어 문서를 한글로 자동번역 프로그램 만들기 (0) | 2022.09.29 |
[Open CV] Open CV로 동영상, 카메라 출력하기 (0) | 2022.08.30 |
[Open CV] Open CV로 이미지, 동영상 출력하기 (1) | 2022.08.30 |