본문 바로가기
카테고리 없음

OpenCV 정리 - 라인(선), 글자 등 그려보기

by 바다의 공간 2025. 3. 13.

지난번 OpenCV로 할 수 있는 영상처리 그리고 보여지는것 Matploblib에 대해서 학습을 했다.

크게 꼭! 알아두어야하는것은 2가지로 생각되는데, OpenCV에서는 일반적인 색상의 'RGB'가 아닌 'BGR'로 된다는 점

그리고 두번째는 '가로 * 세로'가 아닌 '세로*가로'로 된다는 점이다.

 

이번에는 라인이랑 글자(OCR)등 다양하게 활용해보는것을 학습하려고한다.

영상 위에다가 오브젝트 디텍션을 할때 라인을 따줄때 사용할 수 있습니다


▶흰색 도화지 만들어보기

import cv2
import numpy as np

img= np.full((500,500,3), 255, np.uint8)
cv2.imshow('img', img)
cv2.waitKey()

 

일단 이미지를 그리려면 도화지의 역할을 할 것이 필요하니 넘파이의 FULL해서 흰색으로 맞춰준 500*500의 컬러로 맞춰주었다.

 

▶ 선 만들기

import cv2
import numpy as np

img= np.full((500,500,3), 255, np.uint8)


cv2.line(img, (70,70), (400,70), (0,0,255), 5)


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

 

 

 

 

 


여기서 배운건 line이라는것이다. 라인의 파라미터는 위와 같이 쓰인다

나는 지금 img라는 흰색 도화지에 70,70좌표를 시작으로 잡고 400,70을 끝 좌표로 잡았다.

색상은 red 두께는 5로 잡았기때문에 우측과 같은 이미지가 생성이 됐다.

BGR이기때문에 R이 255가 된것이다.

 

 


▶ 사각형만들기

cv2.rectangle(img, (50,200,150,100), (0,0,255), 5)

 

 

좌) 5 우)-1

 

여기서 보면 둘의 차이는 사각형이 채워져있냐 아니냐의 차이인데, -1을 하면 모두 채워진 형태가 반환이 된다.

각 좌표는 x,y,w,h이기때문에 이렇게 된다.

 


▶ 원 그리기

cv2.circle(img, (300,400), 50, (255,0,0), 3)

 

더보기

cv2.circle(image, center, radius, color, thickness)

 

매개변수 설명

image 그림을 그릴 대상 이미지 (img)

center 원의 중심 좌표 (x, y)

radius 원의 반지름 (50 = 50픽셀)

color 색상 (BGR 형식, (255, 0, 0) → 파란색)

thickness 원 테두리 두께 (3 픽셀, -1이면 채움)

 

 

▶ 글자 그리기

cv2.putText(img, 'Hello OpenCV', (50, 300), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 0))
더보기

기본형식

cv2.putText(image, text, org, font, fontScale, color, thickness)

 

매개변수 설명

image 텍스트를 넣을 대상 이미지 (img)

text 출력할 문자열 ('Hello OpenCV')

org 시작 위치 (텍스트 왼쪽 하단 기준, (x, y))

font 글꼴 (cv2.FONT_HERSHEY_SIMPLEX → 기본 글꼴) | 설치도 가능하긴 함!!

fontScale 글자 크기 (2 = 두 배 크기)

color 색상 ((0, 0, 0) = 검은색, BGR)

thickness 글씨 두께 (기본값: 1, 생략됨)