728x90

1. 목표

- opencv로 기하학적 형태를 그리는 방법에 대해서 배워봅시다.

- 여기서 다음의 함수들을 배워보겠습니다.

 ex) cv2.line(), cv2.circle(), cv2.rentagle(). cv2.ellipse(), cv2.putText()

 

 

2. 코드 개요

- 위 함수들을 사용해보기 전에 일반적으로 사용되는 매개변수들에 대한 설명들을 하겠씁니다.

- img : 드로잉을 할 이미지(그림) 파일을 의미합니다.

- color : 색상 값을 BGR 형태로 입력해 줍니다.(명시하지 않으면 하나의 튜플, 즉 그레이스케일로 지정됩니다.)

     예를 들어 (255, 0, 0)을 하면 파란 색이나오고, 그레이 스케일을 사용한다면 스칼라 값 하나를 적어주면 되겠습니다

- thickness 두께 : 두께는 원이나 선의 두꼐를 의미합니다. 기본 값은 1

- lineType : 선의 특징을 지정하며, 8연결성이나 안티에일리어싱 같은게 있습니다. 기본 값은 8연결성으로,

                 cv2.LINE_AA를 줄 경우 곡선에서 더 보기 좋게 만들어 집니다.

 

* 안티 에일리어싱 : 계단현상 방지기능

https://namu.wiki/w/%EC%95%88%ED%8B%B0%EC%97%90%EC%9D%BC%EB%A6%AC%EC%96%B4%EC%8B%B1

 

 

3. 선 그리기

 

 선을 그리려면 시작점과 끝점을 지정해주면 됩니다.

1. 우선 검은색 영상을 생성해주고

2. 왼쪽 위에서 오른쪽 아래까지 파란 선을 그려주겠습니다.

 

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px
img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 파일 명 : 01_drawline.py

 

 

 

4. 사각형 그리기

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

파일명 : 02_drawrectangle.py

- 왼쪽 위 코너와 오른쪽 아래 코너, 색상과 두께를 지정해주면 만들어 집니다.

- 이번 예제는 녹색 상자로 두께가 3

 

 

 

5. 원을 그려보자

 

 원을 그리려면 원의 중심과 반지름을 명시해주면 됩니다. 추가로 색상과 두께를 지정해주면 그려지는데 이번 경우에는 두께자리에 -1을 주어 원안을 빨간색으로 채우겠습니다.(BGR 모델)

 

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

img = cv2.circle(img,(447,63), 63, (0,0,255), -1)

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

파일명 : 03draw_circle.py

 

 

 

 

 

300x250

+ Recent posts