[python] PIL resize시 이미지가 돌아가는 문제

mspark·2023년 7월 5일
0
post-thumbnail

CNN 모델을 만들기 위해 이미지 전처리를 하는 도중에 이미지가 멋대로 돌아가는 현상 발생했다.

발생 원인은 이미지 파일 내 EXIF(Exchangeable Image File) 메타데이터가 존재하는데, 이 데이터 내부의 이미지 가로, 세로 길이 정보가 resize시 Orientation(방향) 데이터가 반영되지 않아 왜곡이 된다.

EXIF(Exchangeable Image File) 데이터란?
디지털 카메라로 촬영한 이미지 파일에 포함되는 메타데이터이다. 이 데이터는 이미지 생성과 관련된 다양한 정보를 저장하며, 이미지의 속성과 촬영 환경에 대한 세부 사항을 제공한다. Exif 데이터에는 다음과 같은 정보가 저장된다.
: 카메라 제조사와 모델명, 이미지 크기와 해상도, 촬영일시, 렌즈 정보, (조리개 값, 셔터 속도, ISO 값) 등 촬영 설정, 방향(회전) 정보, 위치 정보 (GPS 좌표), 화이트 밸런스 및 색 공간 정보

이때 다음의 코드를 추가해 주면 된다.

image = PIL.ImageOps.exif_transpose(image)

예시 코드와 함께 보자.

def img_resize(img_paths) :
    for file_name in img_paths :
        image = PIL.Image.open(file_name) # 이미지 열기
        image = PIL.ImageOps.exif_transpose(image) # 이미지 회전 방지
        resized_image = image.resize((new_width, new_height)) # 이미지 리사이징
        resized_image.save(file_name)

유의사항은 resize 이전에 코드를 추가해줘야 한다.

0개의 댓글