코드 및 이미지 : https://github.com/Seokii/Study_OpenCV
이번에는 OpenCV를 활용하여 선, 사각형, 원을 그려보는 코드를 구현해 보도록 하겠습니다.
1. 함수 설명
1.1. cv2.line()
cv2.line (img, pt1, pt2, color, thickness, lineType, shift) -> img
- img : 이미지
- pt1, pt2 : 시작점, 종료점 좌표 (x, y)
- color : 색상 (blue, green, red) -> (0~255, 0~255, 0~255)
- thickness : 선 굵기 (default: 1)
- lineType : 선 종류 (cv2.LINE_4, LINE_8, LINE_AA)
- shift : 좌표 값의 축소 비율 (default: 0)
1.2. cv2.rectangle()
cv2.rectangle(img, pt1, pt2, color, thickness, llineType, shift) -> img
위와 동일
1.3. cv2.circle()
cv2.circle(img, center, radius, color, thickness, lineType, shift) -> img
- img : 이미지
- center : 원의 중심 좌표 (x, y)
- radius : 원의 반지름
- 나머지는 위와 동일
cv2.line & cv2.rectangle & cv2.circle 을 이용하여 OpenCV에서는 선, 사각형, 원을 그릴 수 있습니다.
2. 주피터 노트북으로 구현하기
import numpy as np
import cv2
- 필요한 라이브러리를 불러옵니다.
R, G, B = (0,0,255), (0,255,0), (255,0,0)
img = np.zeros((800, 800, 3), np.uint8)
img[:] = (255, 255, 255)
- 색상 변수를 선언합니다. 3개의 원소를 갖는 튜플로 선언하며 각각 순서대로 파랑, 초록, 빨강입니다.
- img : 800x800의 크기의 3채널 np.uint8형으로 행렬을 생성합니다.
- img[ : ] : 행령의 모든 화소를 흰색으로 지정했습니다.
cv2.line(img, (20,20), (100,100), R)
cv2.line(img, (120,20), (200,100), G, 2)
cv2.line(img, (220,20), (300,100), B, 3)
cv2.line(img, (320,20), (400,100), R, 5, cv2.LINE_AA)
cv2.imshow("drawing figures", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
- cv2.line()을 사용해서 만든 결과입니다. 선의 색상과 굵기가 코드에 따라 바뀌는 모습을 볼 수 있습니다.
- cv2.LINE_AA는 안티 앨리어싱의 기능으로 좀더 부드러운 선의 모양을 제공하는 기능입니다.
cv2.rectangle(img, (20,150), (170, 300), R, 1)
cv2.rectangle(img, (190,150), (340, 300), G, 3)
cv2.rectangle(img, (360,150), (510, 300), B, -1)
cv2.imshow("drawing figures", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
- cv2.rectangle()을 사용해서 만든 결과입니다. 선의 색상과 굵기가 코드에 따라 바뀌는 모습을 볼 수 있습니다.
- 굵기를 -1로 설정하면 내부가 채워지는 것도 확인할 수 있습니다.
cv2.circle(img, (120,500), 100, R, 3)
cv2.circle(img, (340, 500),100, G, 3, cv2.LINE_AA)
cv2.circle(img, (570, 500),100, B, -1, cv2.LINE_AA)
cv2.imshow("drawing figures", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
- cv2.circle() 또한 사각형을 그리는 것과 유사하다는 것을 확인하실 수 있습니다.
'머신러닝 & 딥러닝 > 컴퓨터 비전' 카테고리의 다른 글
[OpenCV with Python] - 06. matplotlib에 이미지 불러오기 cv2.cvtColor() (0) | 2021.09.15 |
---|---|
[OpenCV with Python] - 05. 사진 파일 불러오기 (0) | 2021.09.12 |
[OpenCV with Python] - 04. 텍스트 입력해보기 (0) | 2021.09.04 |
[OpenCV with Python] - 02. 트랙바(Trackbar) 만들기 (1) | 2021.09.04 |
[OpenCV with Python] - 01. OpenCV 시작하기 (0) | 2021.09.02 |
댓글