Home [CV] 텍스트
Post
Cancel

[CV] 텍스트

Library Import

1
2
import cv2
import numpy as np

텍스트

  1. cv2.FONT_HERSHEY_SIMPLEX : 보통 크기의 산 셰리프 글꼴
  2. cv2.FONT_HERSHEY_PLAIN : 작은 크기의 산 셰리프 글꼴
  3. cv2.FONT_HERSHEY_SCRIPT_SIMPLEX : 필기체 스타일 글꼴
  4. cv2.FONT_HERSHEY_TRIPLEX : 보통 크기의 셰리프 글꼴
  5. cv2.FONT_ITALIC : 기울임
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
img = np.zeros((480, 640, 3), dtype=np.uint8) # height, width, channel

COLOR = (255, 255, 255) # 흰색
THICKNESS = 1 # 글자 두께
SCALE = 1 # 글자 크기

# 그릴 위치, 텍스트, 시작 위치, 폰트 종류, 크기, 색상, 두께
cv2.putText(img, 'SIMPLEX', (20, 50),
            cv2.FONT_HERSHEY_SIMPLEX, SCALE, COLOR, THICKNESS)
cv2.putText(img, 'PLAIN', (20, 150),
            cv2.FONT_HERSHEY_PLAIN, SCALE, COLOR, THICKNESS)
cv2.putText(img, 'SCRIPT_SIMPLEX', (20, 250),
            cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, SCALE, COLOR, THICKNESS)
cv2.putText(img, 'TRIPLEX', (20, 350),
            cv2.FONT_HERSHEY_TRIPLEX, SCALE, COLOR, THICKNESS)
cv2.putText(img, 'ITALIC', (20, 450),
            cv2.FONT_HERSHEY_TRIPLEX | cv2.FONT_ITALIC, SCALE, COLOR, THICKNESS)

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

한글 우회 방법

OpenCV에서는 한글을 지원하지 않기 때문에 한글 텍스트는 물음표(?)로 보이게 된다. 따라서 우회하여 작성하여야 한다. PIL을 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from PIL import ImageFont, ImageDraw, Image

img = np.zeros((480, 640, 3), dtype=np.uint8) # height, width, channel

# 한글 우회하여 텍스트 입력하는 함수
def myPutText(src, text, pos, font_size, font_color):
    img_pil = Image.fromarray(src)
    draw = ImageDraw.Draw(img_pil)
    font = ImageFont.truetype('font/gulim.ttc', font_size)
    draw.text(pos, text, font=font, fill=font_color)

    return np.array(img_pil)

COLOR = (255, 255, 255) # 흰색
FONT_SIZE = 30 # 폰트 크기

img = myPutText(img, '또또 주인의 주인', (20, 50), FONT_SIZE, COLOR)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
This post is licensed under CC BY 4.0 by the author.