[Python] opencv - 텍스트와 파일 저장

개발log·2024년 3월 4일
0

Python

목록 보기
10/17
post-thumbnail

텍스트

  • cv2.putText(img, "hyeKjung SIMPLEX", (20,50),cv2.FONT_HERSHEY_SIMPLEX, SCALE, COLOR, THINKNESS): 그릴 위치, 텍스트 내용, 시작 위치, 폰트 종류, 크기, 색, 두께
  • cv2.FONT_HERSHEY_SIMPLEX: 보통 크기의 산 세리프 글꼴
  • cv2.FONT_HERSHEY_PLAIN: 작은 크기의 산 세리프 글꼴
  • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX: 필기체 스타일 글꼴
  • cv2.FONT_HERSHEY_TRIPLEX: 보통 크기의 세리프 글꼴
  • cv2.FONT_ITALIC: 기울임(이탤릭체)
import numpy as np
import cv2

img = np.zeros((480,640,3), dtype=np.uint8)
SCALE = 1 # 크기
COLOR =(255,255,255) # 흰색
THINKNESS = 1 # 두께

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

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


한글

  • opencv는 한글을 제공하지 않음.

기존 한글 사용 시

cv2.putText(img, "나의 개발 저장소", (20,50),cv2.FONT_HERSHEY_SIMPLEX, SCALE, COLOR, THINKNESS)


한글 우회 방법

import numpy as np
import cv2
# PIL (Python Image Library)
from PIL import ImageFont,ImageDraw, Image

def myPutText(src, text, pos, font_size, font_color):
    img_pil = Image.fromarray(src)
    # PIL 이미지 객체에 그리기 객체 생성
    draw = ImageDraw.Draw(img_pil)
    font = ImageFont.truetype('fonts/gulim.ttc', font_size)
    
    # 이미지에 텍스트를 지정된 위치(pos)에 원하는 폰트와 색상으로 그림
    draw.text(pos, text, font=font, fill=font_color)
    return np.array(img_pil)

img = np.zeros((480,640,3), dtype=np.uint8)
FONT_SIZE = 30
COLOR =(255,255,255) # 흰색

img = myPutText(img, '나의 개발 저장소', (20,50),FONT_SIZE, COLOR)

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


파일 저장

이미지 저장

# 파일 저장
import cv2
img = cv2.imread('../fff/woman.png', cv2.IMREAD_GRAYSCALE) # 흑백 이미지로 불러옴

result = cv2.imwrite('img_save.jpg', img)
print(result)

콘솔

True

동영상 저장

  • avi : 비디오와 오디오 데이터를 동시에 저장하는 파일 형식
# 동영상 저장
import cv2
cap = cv2.VideoCapture('../OpenCV/viedo.mp4', cv2.IMREAD_GRAYSCALE)

# 코덱 정의
fourcc = cv2.VideoWriter_fourcc(*'DIVX') # D I V X
# 프레임 크기, fps
width = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)*2 # 영상 속도가 2배

# 저장 파일명, 코덱, FPS, 크기(width, height)
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    out.write(frame) # 영상 데이터만 저장(소리 없음)
    cv2.imshow('video', frame)
    if cv2.waitKey(1) == ord('q'):
        break

    out.release()
    cap.release()
    cv2.destroyAllWindows()

profile
나의 개발 저장소

0개의 댓글