일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- Self-supervised
- 딥러닝
- ViT
- 논문리뷰
- 인공지능
- Semantic Segmentation
- 알고리즘
- 프로그래머스
- 논문구현
- 논문
- Computer Vision
- 파이썬
- 머신러닝
- 논문 리뷰
- pytorch
- optimizer
- 코딩테스트
- cnn
- Paper Review
- Convolution
- opencv
- 코드구현
- transformer
- 파이토치
- Segmentation
- object detection
- 옵티마이저
- programmers
- Ai
- Today
- Total
Attention please
[OpenCV] OpenCV로 도형 그리기(직선, 원, 사각형, 다각형) 본문
빈 도화지 그리기
도형을 그리기 전 도화지를 먼저 만들어 주어야 한다.
import cv2
import numpy as np
img = np.zeros((480, 640, 3), dtype = np.uint8)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
위와 같이 도화지를 만들었다면 도형을 그릴 준비는 끝이다.
직선 그리기
opencv로 그릴 수 있는 직선에는 총 3가지 종류가 있다.
- cv2.LINE_4 : 상하좌우 4 방향으로 연결된 선
- cv2.LINE_8 : 대각선을 포함한 8 방향으로 연결된 선 (기본값)
- cv2.LINE_AA : 부드러운 선 (anti-aliasing)
또한 직선을 그리기 위해서는 선의 색과 두께를 지정해주어야 한다.
COLOR = (0, 255, 255) # BGR : Yellow
THICKNESS = 3 # 두께
직선을 그릴 때는 cv2.line() 함수를 사용하는데 차례대로 (도화지, 시작점, 끝점, 색, 두께, 선 타입) 이다.
cv2.line(img, (50, 100), (400, 50), COLOR, THICKNESS, cv2.LINE_8)
cv2.line(img, (50, 200), (400, 150), COLOR, THICKNESS, cv2.LINE_4)
cv2.line(img, (50, 300), (400, 250), COLOR, THICKNESS, cv2.LINE_AA)
원 그리기
원을 그리기 전 두께, 색 뿐만 아닌 반지름의 크기도 추가로 지정해주어야 한다.
COLOR = (255, 255, 0) # BGR : 옥색
RADIUS = 50 # 반지름
THICKNESS = 10 # 두께
원을 그릴 때는 cv2.circle() 함수를 사용하는데 차례대로 (도화지, 원의 중심, 반지름, 색, 두께, 선 타입) 이다.
추가로 원을 그릴 때 속이 빈 원과 속이 찬 원을 구분할 수 있다.
cv2.circle(img, (200, 100), RADIUS, COLOR, THICKNESS, cv2.LINE_AA) # 속이 빈 원
cv2.circle(img, (400, 100), RADIUS, COLOR, cv2.FILLED, cv2.LINE_AA) # 속이 찬 원
사각형 그리기
사각형을 그리기 전 색과 두께를 먼저 지정해주어야 한다.
COLOR = (0, 255, 0) # BGR : Green
THICKNESS = 3 # 두께
사각형을 그릴 때는 cv2.rectangle() 함수를 사용하는데 차례대로 (도화지, 왼쪽 위 좌표, 오른쪽 아래 좌표, 색, 두께) 이다. 또한 사각형 역시 속이 빈 사각형과 속이 찬 사각형으로 구분하여 그릴 수 있다.
cv2.rectangle(img, (100,100), (200,200), COLOR, THICKNESS) # 속이 빈 사각형
cv2.rectangle(img, (300,100), (400,300), COLOR, cv2.FILLED) # 속이 찬 사각형
다각형 그리기
직접 좌표를 지정하여 도형을 그릴 수 있다. 보통 마우스를 클릭한 좌표 등을 가져와 도형을 그리는 등의 작업을 할 때 자주 사용된다.
먼저 색과 두께를 지정한다.
COLOR = (0, 0, 255) # BGR : Red
THICKNESS = 3 # 두께
이번에는 직접 좌표를 지정했다.
pts1 = np.array([[100, 100], [200, 100], [100, 200]])
pts2 = np.array([[200, 100], [300, 100], [300, 200]])
각 리스트안의 좌표는 다각형의 꼭짓점을 의미하며 총 3개의 점이 있으므로 삼각형이 만들어진다. 위 좌표를 통해 그림을 그리는데 다각형 역시 속이 빈 다각형과 속이 찬 다각형으로 구분하여 그릴 수 있다.
다각형을 그릴 때는 cv2.polylines() 함수를 사용하는데 차례대로 (도화지, 다각형의 좌표, 닫힌 or 열린 도형 여부, 색, 두께, type) 이다.
cv2.polylines(img, [pts1, pts2], True, COLOR, THICKNESS, cv2.LINE_AA) # 속이 빈 다각형
pts3 = np.array([[[100,300], [200,300], [100,400]], [[200,300], [300,300], [300,400]]])
cv2.polylines(img, pts3, True, COLOR, cv2.LINE_AA) # 속이 찬 다각형
'OpenCV' 카테고리의 다른 글
[OpenCV] OpenCV로 이미지 전처리 하기 (0) | 2023.01.09 |
---|---|
[OpenCV] OpenCV를 이용한 동영상 출력 및 저장 (0) | 2023.01.08 |
[OpenCV] OpenCV를 이용한 이미지 출력 및 저장 (0) | 2023.01.08 |
[OpenCV] OpenCV 설치 시 Building wheels for collected packages: opencv-python Building wheel for opencv-python (PEP 517) ... | 문제 발생 (0) | 2023.01.08 |