이미지들의 평균 그리기

Joonas' Note

이미지들의 평균 그리기 본문

개발/python

이미지들의 평균 그리기

2022. 6. 24. 19:38 joonas 읽는데 2분
  • 설명
  • 코드
  • 결과

설명

여러 이미지가 들어있는 디렉토리

이미지들의 평균 픽셀값을 확인하고 싶은 경우에 사용하면 된다.

오래 걸리는 경우에 로딩을 표시하려고 tqdm을 사용했는데 그냥 빼도 된다.

이미지의 픽셀값을 전부 다 저장하고 평균을 출력하다간 메모리가 터진다. 그래서 Moving average로 해결했다.

코드

import os
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from tqdm import tqdm
def file_list(path):
return list(map(lambda s: os.path.join(path, s), os.listdir(path)))
def plot_average_image(path):
a = file_list(path)
print(len(a), a[:5])
a_ = None
n = 1
for i in tqdm(a):
try:
img = Image.open(i, 'r').resize((228, 228))
except:
print('Wrong image file:', i)
continue
img = np.array(img)
if n == 1:
a_ = img
else:
a_ = ((a_ * n) + img) / (n + 1)
n += 1
del img
plt.imshow(a_ / 255.)
plt.axis('off')
plt.show()
del a_
del a
plot_average_image('../animeface/images')
plot_average_image('../celebA/img_align_celeba/img_align_celeba')

결과

아래와 같이 1,000장 정도 되는 얼굴 사진을 모두 겹쳐서 그려볼 수 있다.

 

Comments