본문으로 바로가기

선 그리기

입력 이미지에 시작점, 끝점을 잇는 직선을 그립니다.

 

cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

매개 변수 설명
img 소스 이미지
pt1 시작점(width, height)
pt2 끝점(width, height)
color 선 색상 (BGR)
thickness 선 두께
lineType 선 타입
shift 그리기 좌표값의 축소비율
import numpy as np
import cv2

img = np.zeros((240, 320, 3), np.uint8)
img2 = np.ones((240, 320, 3), np.uint8) * 255

cv2.line(img, (0, 120), (320, 120), (0, 255, 255), 3)
cv2.line(img2, (0, 0), (img2.shape[1], img2.shape[0]), (255, 0, 0), 5)

cv2.imshow('img', img)
cv2.imshow('img2', img2)
 
cv2.waitKey() 
cv2.destroyAllWindows()

 

직사각형 그리기

입력 이미지에 시작점의 좌표부터 입력받은 크기의 직사각형을 그립니다.

 

cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

매개 변수 설명
img 소스 이미지
pt1 사각형의 시작점 (x, y)
pt2 사각형의 크기 (width, height)
color 선 색상 (BGR)
thickness 선 두께
lineType 선 타입
shift 그리기 좌표값의 축소비율
import numpy as np
import cv2

img = np.zeros((320, 480, 3), np.uint8)
img2 = np.ones((320, 480, 3), np.uint8) * 255

h = img.shape[0]
w = img.shape[1]
cv2.rectangle(img, (50, 50), (w-50, h-50), (0, 255, 255), 3)
cv2.rectangle(img, (100, 100), (w-100, h-100), (255, 0, 0), 5)

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

 

원 그리기

입력 이미지에 중심점 좌표에서 입력받은 반지름을 가지는 원을 그립니다.

 

cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None)

매개 변수 설명
img 소스 이미지
center 원의 중심좌표 (x, y)
radius 원의 반지름 (width, height)
color 선 색상 (BGR)
thickness 선 두께
lineType 선 타입
shift 그리기 좌표값의 축소비율
import numpy as np
import cv2

img = np.zeros((320, 480, 3), np.uint8)
img2 = np.ones((320, 480, 3), np.uint8) * 255

y = img.shape[0]
x = img.shape[1]
cv2.circle(img, (int(x/2), int(y/2)), 100, (0, 0, 255), 3)

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

 

다각형 그리기

입력 이미지에 입력받은 꼭지점을 연결하여 그립니다.

 

cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)

매개 변수 설명
img 소스 이미지
pts 꼭지점 (x, y) [<class 'numpy.ndarray'>]
isClosed 폐곡선 여부 True/False
color 선 색상 (BGR)
thickness 선 두께
lineType 선 타입
shift 그리기 좌표값의 축소비율

 

isClosed 옵션을 True 로 주게되면 img2 처럼 시작점과 끝점이 연결됩니다.

import numpy as np
import cv2

img = np.zeros((320, 480, 3), np.uint8)
img2 = np.zeros((320, 480, 3), np.uint8)

y = img.shape[0]
x = img.shape[1]

point = np.array([[50, 50], [x-50, 50], [int(x/2), int(y-50)]], dtype=np.int32)
cv2.polylines(img, [point], False, (0, 0, 255), 3)
cv2.polylines(img2, [point], True, (0, 0, 255), 3)

cv2.imshow('img', img)
cv2.imshow('img2', img2)
 
cv2.waitKey() 
cv2.destroyAllWindows()