이번 강좌에서는 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]로 빼는지 궁금할 수도 있다.(나만 그렇게 생각했나?)
궁금하면 직접 해보면 된다,
우리가 원하는 것은 사각형 안에 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
그래서 방금 글을 작성하였다. ㅎㅎㅎ
이번 강좌는 여기까지~ 수고하셨습니다.
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
OpenCV 강좌 7 - 마우스 이벤트 🖱️ (0) | 2020.11.08 |
---|---|
OpenCV 강좌 6 - 키보드 이벤트 (0) | 2020.10.07 |
OpenCV 강좌 4 - 도형을 그리자. (0) | 2020.10.03 |
OpenCV2 강좌 3 - 비디오 프레임 캡처 및 표시 (0) | 2020.09.11 |
OpenCV 강좌 2 - 영상 입출력과 Display (0) | 2020.09.10 |