* 파이썬 이미지 처리 모듈 Pillow *
컴퓨터를 사용하는 가장 큰 이유는
인간이 할 수 없는 일(사실상 불가능해 보이는 다량의 일)을 손쉽게 해결해주기 때문이라고 생각합니다.
이번에 딥러닝 연구실에서 데이터를 만드는 데 가위바위보 이미지를 각각 2500장씩 만들어야 했습니다.
모든 이미지를 128 x 128로 리사이징 해야 할 뿐만 아니라 파일명까지 팀원들과 맞춰야 했습니다.
여기서 저는 파이썬을 사용해서 손쉽게 해결했습니다.
파이썬에는 Pillow 라는 이미지 처리 모듈이 있습니다.
제가 짠 소스를 예시로 보여드리겠습니다.
===========================================
from PIL import Image
lst_image = []
for i in range(2500): # i = 0~2499
lst_image = lst_image+['Image (' + str(i+1)+').jpg']
#Image (1~2500).jpg
for i in range(2500):
im = Image.open(lst_image[i])
im2 = im.resize((128,128))
str_tmp = ('Image' + str(i+17500) + '.jpg')
im2.save(str_tmp)
lst_image[i] = str_tmp
print("Finish!")
#im = Image.open('1.jpeg')
#im2 = im.resize((128,128))
#im2.save('test2.jpeg')
#print(im2.size)
===========================================
대충 반복문을 돌려서 기존의 파일명을 리스트 변수 하나에 때려넣은 뒤,
리스트 변수에서 인덱스를 통해 접근하면서 하나씩 리사이징 후 새로운 파일명으로 저장하는 형식의 소스입니다.
Pillow 모듈의 함수를 한번 살펴볼까요?
1. from PIL import Image → Pillow 모듈은 import Pillow 로 하지 않습니다. import PIL 입니다.
2. im = Image.open('1.jpeg') → 1.jpeg 이라는 파일명의 이미지 파일을 엽니다.
단순히 Image,open(파일명) 이 아니라 그 행위를 im 이라는 변수에 집어넣었습니다.
모든 이미지 처리는 이미지를 연 후에 행동해야 하기 때문에, 앞으로 이미지 처리 함수들은 모두 im 변수를 통해 접근하게 됩니다.
(여기서 '열다'의 의미는 '작업대상이다'를 의미합니다.)
3. im2 = im.resize((128,128)) → 리사이즈 해주는 함수입니다.
2000 x 2000 사이즈의 파일이라도 resize((128,128)) 을 한다면 128 x 128 로 작아집니다.
im.resize((128,128)) 의 의미는 1번에서 나온 1.jpeg 파일을 연 후(작업대상으로 지정한 후), 그 파일을 resize 합니다.
그리고 resize 한 새로운 파일을 im2 라는 변수에 집어넣었습니다.
im 의 이미지는 1.jpeg(예를 들어 2000 x 2000) 이고, im2 의 이미지는 128 x 128 크기의 이미지가 되는 것 입니다.
4. im2.save('test2.jpeg') → 파일을 저장하는 함수입니다.
im2 라는 변수 안에 있는 이미지 (128 x 128 크기의 이미지)를 test2.jpeg 이라는 파일명으로 저장합니다.
5. print(im2.size) → size 함수는 해당 변수의 이미지의 크기를 반환합니다.
im2 이미지는 128 x 128 이기 때문에 print(im2.size) 함수를 사용할 경우 (128,128) 의 값을 출력해 줍니다.
------------------------------------------------------------------------------------------------------------------------------
이렇게 파이썬 이미지 처리 모듈 Pillow 의 4가지 기본적인 함수에 대해 살펴봤습니다.
>>> 1. Image.open(파일명) → (파일명) 파일을 작업대상으로 지정함.
>>> 2. im2 = im.resize((128,128)) → 작업대상으로 지정한 이미지의 크기를 128 x 128 로 변환 후 im2 변수에 넣음.
>>> 3. im2.save(파일명) → im2 변수 안에 있는 이미지를 (파일명) 이미지파일로 저장함.
>>> 4. print(im2.size) → im2 변수 안에 있는 이미지의 크기를 출력함.(출력은 print 함수가 담당함.)