etc/Visualization

[Python] OpenCV로 이미지에 글자 합성하기

코딩무민 2020. 12. 1. 13:53
반응형

오늘은 OpenCV로 Python에서 이미지를 읽어오고, 이미지에 글자를 합성하는 방법에 대해 알아보도록 하겠습니다. 

 

1. OpenCV로 이미지 읽어오기

12월이고 날씨도 추우니까 겨울 사진을 가지고 왔습니다. 

각자의 경로를 설정하시고, 다음과 같이 사진을 불러오시면 됩니다. 

 

cv2.imread(path, flag)

flag : 이미지를 읽는 방식 

•cv2.IMREAD_COLOR : 컬러 이미지 Loading. 이미지의 투명성은 무시됨

•cv2.IMREAD_GRAYSCALE : 흑백 모드 이미지 Loading

•cv2.IMREAD_UnCHANGED : 투명성을 포함한 이미지 Loading

import cv2
img = cv2.imread('./winter.jpg', cv2.IMREAD_UNCHANGED)

2. 읽어온 이미지 및 이미지의 사이즈 확인 

cv2.imshow(window title , 이미지)

# 이미지 확인
cv2.imshow('Winter', img) 
# 이미지의 사이즈 확인 
img.shape #(height, width , channel)
# (538, 804, 3)

이미지 예시

4. OpenCV로 이미지에 글자 합성하기

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

Parameter 설명
img 불러온 이미지
text 출력할 문자
org 출력할 문자의 시작 위치좌표 - text의 좌측 하단 / (X좌표, Y좌표) 
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 폰트 색상
blue = (255, 0, 0)
green= (0, 255, 0)
red= (0, 0, 255)
white = (255, 255, 255)
thickness 폰트의 두께
lineType 선의 종류 (디폴트 : cv.Line_8)
- LINE_8 : 8-connected line
- LINE_4 : 4-connecterd line
- LINE_AA : antialiased line
bottomLeftOrigin org 사용 옵션. True : 좌측 하단. False : 좌측 상단
# 폰트 색상 지정
blue = (255, 0, 0)
green= (0, 255, 0)
red= (0, 0, 255)
white= (255, 255, 255) 
# 폰트 지정
font =  cv2.FONT_HERSHEY_PLAIN

# 이미지에 글자 합성하기
img = cv2.putText(img, "It's Winter", (350, 40), font, 2, blue, 1, cv2.LINE_AA)

# 이미지 보여주고 창 끄기
cv2.imshow('winter' , img)
cv2.waitKey(0) 
cv2.destroyAllWindows() 

 

이미지에 글자 합성 예시

5. 이미지 저장

이제 글자가 합성된 이미지를 다른 이름으로 저장하고 윈도우 창을 닫도록 하겠습니다. 

 

 

cv2.imwrite(저장할 이름, 이미지)

cv2.waitKey(0) : 화면에 이미지를 표시후 사용자가 키보드를 누를 때 까지 대기

cv2.destroyAllWindows() : 모든 윈도우 창 끄기

# 다른이름으로 저장하기
cv2.imwrite("winter2.png",img)

 

지금까지 이미지를 불러와 이미지에 글자를 합성하는 방법에 대해 알아보았습니다! 

 

이미지 출처 : blog.bccard.com/3061#recentEntries 

 

반응형

'etc > Visualization' 카테고리의 다른 글

[Python] Matplotlib 기초(Tutorial) - 2  (0) 2020.10.16
[Python] Matplotlib 기초(Tutorial) - 1  (0) 2020.10.16