Computer Vision

[이미지 전처리]. 이미지 크기 한꺼번에 변경하기 ( image preprocessing)

Acdong 2020. 11. 25. 13:59
728x90

구글의 티쳐블 머신을 학습시키기 위해선 224px , 224px로 이미지 크기를 조정해야 한다.


많은 이미지들의 크기를 한번에 바꾸는 방법을 알아보자.

프로그래머는 귀차니즘이 많을수록 실력이 늘어나는 것같다. ㅋㅋ

 

먼저 패키지를 임포트 한다.

import os
import glob

 그리고 현재 경로를 확인하는 함수 os.getcwd() 실행해서 현재 위치를 체크한다.

os.getcwd() # 현재경로 확인

 그리고 glob 함수를 통해서 이미지들의 경로들을 리스트로 받아온다.

animal = glob.glob(os.getcwd() + "./동물/동물/*.jpg")
beauti = glob.glob(os.getcwd() + "./뷰티/뷰티/*.jpg")
fashion = glob.glob(os.getcwd() + "./패션/패션/*.jpg")
kids = glob.glob(os.getcwd() + "./키즈/키즈/*.jpg")
game = glob.glob(os.getcwd() + "./게임/게임/*.jpg")
eating = glob.glob(os.getcwd() + "./먹방/먹방/*.jpg")

인자로 들어간 코드를 해석하면

 

animal = glob.glob(os.getcwd() + "./동물/동물/*.jpg")

현재 경로에서 "동물" 폴더안에 있는 "동물" 폴더 안에있는  *. jpg ( 확장자가 jpg 인 파일)

들의 경로를 리스트로 반환해라

 

결과를 보면

 

 

jpg 파일들의 경로들이 모두 리스트에 담겼다.

 

그 상태에서 모든 카테고리를 리스트에 담는다.

categoryList = [animal,beauti,fashion,kids,game,eating]

그리고 이미지 처리 패키지를 임포트

from wand.image import Image

보통은 Pillow 패키지의 PIL , Image를 사용하지만

나는 이상하게 에러가 자꾸 나서 (. jpg를 처리할 때 에러가 났던 것 같음.)

그래서 다른 패키지를 계속 찾아보다가 wand.imge 패키지를 사용해서 처리했다.

# 224 px * 244px 로 변경
for ca in categoryList:
    for imgPath in ca:
        img = Image(filename=imgPath)
        img.sample(224,224)
        img.save(filename=imgPath)

처리는 간단하다 Image()에 filename 속성의 이미지 경로를 넣고

sample 함수로 이미지의 가로세로 px 크기를 지정한다.

그리고 그 이미지를 고대로 저장( 덮어쓰기) 하면 된다.

 

시간은 좀 오래 걸리지만 노가다로 하는 것보다 훨씬 낫지 ㅎㅎ

 

 

반응형