본문 바로가기
ML & DL/OpenCV

[OpenCV] 이미지에 문자열 넣기

by 홍월이_ 2022. 12. 20.

아래 내용들은 제가 혼자 학습하면서 정리한 내용들입니다.

'부족한 내용' 혹은 '잘못된 내용'이 있을 수 있습니다.

참고 자료들은 최대한 Reference에 넣었으며 문제가 생길시 연락 부탁드립니다.

댓글 남겨주시면 더욱 공부하고 수정하도록 하겠습니다.

감사합니다.


 

Computer Vision 관련 이미지 처리 및 딥러닝을 하다보면 이미지에 문자열을 입력해야하는 경우가 생긴다.

이때 OpenCV를 사용하여 텍스트를 입력할 수 있다. OpenCV는 Drawing Function을 통해 선이나 도형, 문자열을 넣을수 있는 기능을 제공한다. 이 중에서 putText() 라는 메소드를 이용해서 이미지에 텍스트를 입력할 수 있다.

 

cv2.putText

cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin)

Parameters

  • img : 문자열을 넣을 원본 이미지
  • text : 출력할 문자열
  • org : 문자열 좌표(좌측 하단)
  • fontFace : 출력할 문자열 폰트
    • • cv2.FONT_HERSHEY_SIMPLEX , 값: 0, 중간 크기 산세리프 폰트
    • cv2.FONT_HERSHEY_PLAIN, 값: 1, 작은 크기 산세리프 폰트
    • cv2.FONT_HERSHEY_DUPLEX, 값: 2, 2줄 산세리프 폰트
    • cv2.FONT_HERSHEY_COMPLEX, 값: 3, 중간 크기 세리프 폰트
    • cv2.FONT_HERSHEY_TRIPLEX, 값: 4, 3줄 세리프 폰트
    • cv2.FONT_HERSHEY_COMPLEX_SMALL, 값: 5, COMPLEX 보다 작은 크기
    • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, 값: 6, 필기체 스타일 폰트
    • cv2.FONT_HERSHEY_SCRIPT_COMPLEX, 값: 7, 복잡한 필기체 스타일
    • cv2.FONT_ITALIC, 값: 16, 이탤릭체를 위한 플래그
  • fontScale : 문자열 폰트 크기
  • color : 폰트 색상
  • thickness : 폰트 두께
  • lineType : 폰트의 선 종류
    • LINE_8 : 8-connected Line(Default)
    • LINE_4 : 4-connected Line
    • LINE_AA : antialiased line
  • bottomLeftOrigin : org 사용 옵션, True-좌측하단, False-좌측상단
import numpy as np
import cv2
from google.colab.patches import cv2_imshow

white_color = (255, 255, 255)

# Font 종류
fonts = [cv2.FONT_HERSHEY_SIMPLEX,
         cv2.FONT_HERSHEY_PLAIN,
         cv2.FONT_HERSHEY_DUPLEX,
         cv2.FONT_HERSHEY_COMPLEX,
         cv2.FONT_HERSHEY_COMPLEX_SMALL,
         cv2.FONT_HERSHEY_TRIPLEX,
         cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
         cv2.FONT_HERSHEY_SCRIPT_COMPLEX,
         cv2.FONT_ITALIC]
fonts_str = ['FONT_HERSHEY_SIMPLEX',
         'FONT_HERSHEY_PLAIN',
         'FONT_HERSHEY_DUPLEX',
         'FONT_HERSHEY_COMPLEX',
         'FONT_HERSHEY_COMPLEX_SMALL',
         'FONT_HERSHEY_TRIPLEX',
         'FONT_HERSHEY_SCRIPT_SIMPLEX',
         'FONT_HERSHEY_SCRIPT_COMPLEX',
         'FONT_ITALIC']

# 검정색 이미지 생성
img = np.zeros((400, 650, 3))

# Font 그리기
for i in range(0, len(fonts)):
    point = 30, 30 + (i * 40)
    cv2.putText(img, f'{fonts_str[i]}', point, fonts[i], 1, white_color, 2)

cv2_imshow(img)

 

 

Reference

https://docs.opencv.org/4.6.0/d6/d6e/group__imgproc__draw.html#ga5126f47f883d730f633d74f07456c576

https://seokii.tistory.com/7

https://copycoding.tistory.com/151

 

...끝

 

 

댓글