비전

[OpenCV] 그리기 함수

왕초보코딩러 2024. 8. 19. 18:46
728x90

 

opencv 라이브러리 임포트

import cv2
import numpy as np

 

그리기

-선

-도형

-문자열

 

 

 

그리기 전에 좌표 값을 잘 알아야 합니다

(0,0)은 window 창의 왼쪽 위의 좌표이고 음수는 없습니다!!

좌표는 (x, y) 순입니다!!


선 그리기

 

직선 그리기

cv2.line(이미지, 시작 좌표, 끝 좌표, rgb, 선 두께, 선 종류)

 


도형 그리기

 

사각형 그리기 1 : 시작점, 끝점

cv2.rectangle(이미지, 시작 좌표, 끝 좌표, bgr, 선 두께, 선 종류)

 

사각형 그리기 2 : width, height

cv2.rectangle(이미지, (x,y,w,h), bgr, 선 두께, 선 종류)

 

그리기

cv2.circle(이미지, 중심 좌표, 반지름,  bgr, 선 두께, 선 종류)

 

다각형 그리기

cv2.polylines(이미지, [좌표1, 좌표2, ..., 좌표n], 처음과 끝 좌표 잇는지, bgr, 선 두께, 선 종류)

 

 


문자열 그리기

cv2.putText(이미지, 텍스트, 텍스트의 왼쪽 아래 좌표, 폰트 종류, 폰트 크기 비율, bgr , 선 두께, 선 종류)

 

 

 


예제

# 화이트 캔버스 만들기
canvas = np.full((640, 640,3), 255, dtype='uint8')

# 좌표는 # 0~639까지
# (x, y) 
# x: 가로
# y: 세로

# 검은색 직선
cv2.line(canvas, (0,0), (639,639), (0,0,0), 3) # 이미지, 시작 좌표, 끝 좌표, rgb, 선 두께, 선 종류

# 빨간색 사각형
cv2.rectangle(canvas, (200,200), (439, 439), (0,0,255), 5) # 이미지, 시작 좌표, 끝 좌표, bgr, 선 두께, 선 종류

# 초록색 사각형
cv2.rectangle(canvas, (10,10,100,20), (0,255,0)) # 이미지, (x,y,w,h), bgr, 선 두께, 선 종류

# 파란색 원
cv2.circle(canvas, (250,250), 50, (255,0,0), 2) # 이미지, 중심 좌표, 반지름,  bgr, 선 두께, 선 종류

# 보라색 다각형
pts = np.array([[10,10], [300,400], [70,40], [50,500]])
cv2.polylines(canvas, [pts], True, (128,0,128), 2) # 이미지, 좌표들, 처음과 끝 좌표 잇는지, bgr, 선 두께, 선 종류

# 검정색 글씨
cv2.putText(canvas, 'drawing', (300,300), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,0)) # 이미지, 텍스트, 텍스트의 왼쪽 아래 좌표, 폰트 종류, 폰트 크기 비율, bgr , 선 두께, 선 종류

cv2.imshow('draw', canvas)

cv2.waitKey()
cv2.destroyAllWindows()

 

 

 

 

 

 


좌표는 그림판에서  커서를 대고 확인

 

색상은 chatgpt에게 물어보면 됩니다! 

 


특히 cv2.rectangle() 함수는 영상처리의 바운딩 박스를 그릴 때 많이 쓰입니다!

그림판으로 고양이의 좌표를 찍어서 표시해볼게요

 

img = cv2.imread('data/cat.jpg')

cv2.rectangle(img, (170,80), (408, 408), (0,0,255),2)
cv2.putText(img, 'Cat', (170,75), cv2.FONT_HERSHEY_PLAIN, 2, (0,0,0), 2)

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

 

바운딩 박스 위에 텍스트를 넣을 때 y 좌표를 5정도 빼주면 좋습니다!

 

 

'비전' 카테고리의 다른 글

[MediaPipe] 포즈 인식  (0) 2024.08.25
[MediaPipe] 얼굴 인식  (0) 2024.08.23
[OpenCV] 특정 색 검출  (0) 2024.08.20
[OpenCV] 마스킹  (0) 2024.08.18
[OpenCV] 이미지, 동영상  (0) 2024.08.17