OpenCV/OpenCV 강좌

OpenCV 강좌 5 - 문자를 출력하자~

KALILIVE 2020. 10. 4. 12:31
반응형

이번 강좌에서는 CV2를 이용해 글자를 입력해 봅시다~

 

함수 설명
cv2.getTextSize(text, fontFace, fontScale, thickness)
-> retval, baseLine
문자열 text의 출력을 위한 크기를 retval에 반환
출력될 사각 영여의 하단으로 부터 사대적 기준선 y의 위치를 반환한다.
cv2.putText(img, text, org, fontFace, fontScale, color, thickness) text(내용)을 사각형 왼쪽 아래 org(좌표)에 폰트(fonstFace), 폰트스케일(FontScale, color로 문자를 출력한다.

예제

import cv2
import numpy as np

img = np.full(shape=(512,512,3),fill_value=255,dtype=np.uint8)
text="Hello OpenCV!(한글)"
org=(50,100)
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,text,org,font,1,(255,0,0),2)

size, BaseLine=cv2.getTextSize(text,font,1,2)
cv2.rectangle(img,org,(org[0]+size[0],org[1]-size[1]),(0,0,255))
cv2.circle(img,org,3,(255,0,255),2)

cv2.imshow("A",img)
cv2.waitKey()
cv2.destroyAllWindows()

cv2.putText() 에 문자열 위치인 org, font, 폰트 스케일 1, (255,0,0) 색상, 두께 2로 출력한다.

그다음 cv2.getTextSize()로 text 문자열을 font, 폰트 스케일 1, 두께 2로 출력하기 위한 사각형의 크기를 size에

저장하고 baseLine은 사각형 아래 기준선의 상대적 y값을 반환한다.

이때 왜 org[0]+size[0]로 더하는데 org[1]-size[1]로 빼는지 궁금할 수도 있다.(나만 그렇게 생각했나?)

궁금하면 직접 해보면 된다,

org[1]+size[1] 로 수정한 결과

우리가 원하는 것은 사각형 안에 Text를 넣는 것이기 때문에 org[1]에서 text의 크기만큼인 size[1]를 빼줘야 그만한

높이를 가진 사각형이 생성된다.

그럼 이제 한번 원본 코드로 실행해 보자.

코드 실행 결과

우리가 의도한 대로 사각형 안에 Text가 들어있는 형식으로 출력인 된다,

(조금씩 삐져 나와있는데 불만 있는 사람은 코드를 수정하여 여백을 만들어 주면 된다,)

내가 Text 를 "Hello OpenCV!(한글)" 로 저장하였는데 OpenCV는 Unicode를 지원하지

않는 점을 확인할 수 있다.

그럼 한글을 출력하기 위한 방법은 없을까?

[Python/OpenCV 관련 잡다한 지식] - OpenCV 한글 출력 깨짐 해결법(feat. PIL활용)

 

OpenCV 한글 출력 깨짐 해결법(feat. PIL활용)

한글을 출력하려고 하면 아래 그림과 같이 깨져버리는 것을 확인할 수 있다. 이제부터 한글깨짐을 해결해 보자. 해결법 Python의 이미지 처리 모듈 하면 PIL (Python Image Library) OpenCV (Computer Vision) 이.

kali-live.tistory.com

그래서 방금 글을 작성하였다. ㅎㅎㅎ

이번 강좌는 여기까지~ 수고하셨습니다.

반응형