작성
·
309
0
안녕하세요?
강의 잘 수강하고 있습니다.
한글을 적용하는 수업에서 하기와 같이 소스코드를 따라서 쳤습니다.
파이썬 버전 : 3.12.2
opencv 버전 : 4.9.0
import cv2 as cv
import numpy as np
#PIL (Python Imaging Library) : 이미지 처리를 위한 파이썬 라이브러리
from PIL import ImageFont, ImageDraw, Image
def myPutText(src, text, pos, font_size, font_color):
img_pil = Image.fromarray(src)
draw = ImageDraw.Draw(img_pil)
font = ImageFont.truetype('fonts/gulim.ttc', font_size)
draw.text(pos, text, font=font, fill=font_color)
return np.array(img_pil)
img = np.zeros((480, 640, 3), np.uint8)
COLOR = (255, 255, 255)
FONT_SIZE = 30
img = myPutText(img, "나도코딩", (20, 50), FONT_SIZE, COLOR)
cv.imshow('img', img)
cv.waitKey(0)
cv.destroyAllWindows()
이렇게 작성해서 실행을 하면 OSError: unknown file format 에러가 출력됩니다.
인터넷 검색을 해보니 Pillow를 다시 설치해봐라, Image를 다시 설치해봐라
많은 조언이 있었는데 결국 성공한 것이 없었습니다.
왠지 제 파이썬 경로상에 PIL이 제대로 설치가 안됐거나 다른 엉뚱한 것을 참조해서 발생하는 문제 같기도 한데 또 vscode의 python 인터프리터는 제대로 설정해서 PIL 작성부분에 오류는 뜨지 않습니다.
혹시 조언을 해주실 수 있으실까요?
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
상냥한 알파카님, PIL(Python Imaging Library)의 OSError: unknown file format
에러는 주로 지원하지 않는 파일 형식을 열려고 할 때 발생합니다. 하지만, 상냥한 알파카님의 코드를 보면 특정 이미지 파일을 열려고 하는 부분은 없고, ImageFont.truetype()
함수에서 문제가 발생하는 것 같습니다.
ImageFont.truetype()
함수의 경우에는 지정한 폰트 파일 경로에 문제가 있을 때 에러가 발생할 수 있습니다. gulim.ttc
파일이 실제로 상냥한 알파카님의 프로젝트 폴더 내에 fonts 폴더 안에 존재하는지, 그리고 파일 경로가 올바른지 확인해보시기 바랍니다.
추가로, 아래와 같은 방법으로 문제를 해결해볼 수 있습니다.
폰트 파일 경로를 절대 경로로 지정해보세요. 예를 들어, C:/Windows/Fonts/gulim.ttc
와 같이 파일이 실제 위치한 절대 경로를 사용해 보세요.
만약 gulim.ttc
파일이 여러 폰트를 포함하고 있는 컬렉션일 경우, PIL이 해당 컬렉션 중 하나의 폰트를 제대로 로딩하지 못할 수 있습니다. 이런 경우, ImageFont.truetype('fonts/gulim.ttc', font_size, index=0)
와 같이 폰트의 인덱스를 지정해 보세요.
Pillow 라이브러리가 최신 버전인지 확인하고, 아닐 경우 업데이트해보세요. 때로는 라이브러리의 버그가 에러의 원인일 수 있으므로, pip install --upgrade Pillow
명령어를 사용해 업그레이드를 시도해 보세요.
이러한 조치들로도 문제가 해결되지 않는다면, Python과 Pillow 라이브러리의 호환성 문제일 수 있으므로, Python 버전을 변경해보는 것도 고려해볼 수 있습니다.
문제 해결을 위한 시도 중 어려움이 있거나 더 궁금한 점이 있다면 언제든지 질문해주세요. 감사합니다.