반응형
이번 강좌에서는 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 > 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 |