이미지 넘파이로 파일을 변환
[공지사항] 지킬블로그 안내드립니다.
지킬 블로그에 대하여 알아보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import os
# 이미지 디렉토리 경로 설정
image_path = '/Users/choedohyeon/Downloads/data/cloudy'
# 디렉토리 내 모든 파일 리스트 가져오기
img_list = os.listdir(image_path)
# .jpg 파일만 필터링
img_list_jpg = [img for img in img_list if img.endswith(".jpg")]
print("img_list_jpg:", img_list_jpg)
# 이미지 배열을 저장할 리스트 초기화
img_list_np = []
# 각 이미지 파일을 반복하면서 처리
for i in img_list_jpg:
img_path = os.path.join(image_path, i)
print("열기를 시도 중:", img_path)
try:
# 이미지 파일 열기
img = Image.open(img_path)
# 이미지를 NumPy 배열로 변환
img_array = np.array(img)
# 배열을 리스트에 추가
img_list_np.append(img_array)
print(i, "이미지 :", img_array.shape)
except FileNotFoundError:
print(f"파일을 찾을 수 없습니다: {img_path}")
# 이미지 배열 리스트를 단일 NumPy 배열로 변환
img_np = np.array(img_list_np)
print("img_np의 형태:", img_np.shape)
plt.imshow(img)
plt.title("trian")
plt.axis("off")
plt.show()

-
필요한 라이브러리 임포트:
numpy는 다차원 배열을 쉽게 처리하기 위한 라이브러리입니다.matplotlib.pyplot은 데이터를 시각화하기 위한 라이브러리입니다.PIL.Image는 이미지 파일을 열고 처리하기 위한 라이브러리입니다.os는 파일과 디렉토리를 다루기 위한 표준 라이브러리입니다.
-
이미지 디렉토리 경로 설정:
image_path = '/Users/choedohyeon/Downloads/data/cloudy'- 처리할 이미지들이 저장된 디렉토리 경로를 설정합니다.
-
디렉토리 내 모든 파일 리스트 가져오기:
img_list = os.listdir(image_path)os.listdir(image_path)를 사용하여 해당 디렉토리에 있는 모든 파일의 이름을 리스트로 가져옵니다.
-
.jpg 파일만 필터링:
img_list_jpg = [img for img in img_list if img.endswith(".jpg")]- 리스트 컴프리헨션을 사용하여
.jpg확장자로 끝나는 파일들만 필터링합니다.
- 리스트 컴프리헨션을 사용하여
-
이미지 배열을 저장할 리스트 초기화:
img_list_np = []- 이미지를 NumPy 배열로 변환하여 저장할 빈 리스트를 초기화합니다.
-
각 이미지 파일을 반복하면서 처리:
for i in img_list_jpg: img_path = os.path.join(image_path, i) print("열기를 시도 중:", img_path) try: img = Image.open(img_path) img_array = np.array(img) img_list_np.append(img_array) print(i, "이미지 :", img_array.shape) except FileNotFoundError: print(f"파일을 찾을 수 없습니다: {img_path}").jpg파일 리스트를 반복하여 각 이미지 파일을 엽니다.os.path.join(image_path, i)를 사용하여 각 파일의 전체 경로를 생성합니다.Image.open(img_path)로 이미지를 열고,np.array(img)로 NumPy 배열로 변환합니다.- 변환된 배열을
img_list_np리스트에 추가합니다. - 파일을 찾을 수 없는 경우
FileNotFoundError를 잡아서 오류 메시지를 출력합니다.
-
이미지 배열 리스트를 단일 NumPy 배열로 변환:
img_np = np.array(img_list_np) print("img_np의 형태:", img_np.shape)- 리스트에 저장된 이미지를 단일 NumPy 배열로 변환하고, 배열의 형태를 출력합니다.
-
마지막으로 불러온 이미지 표시:
if img_list_np: plt.imshow(img_list_np[-1]) plt.title("마지막으로 불러온 이미지") plt.axis("off") plt.show() else: print("불러온 이미지가 없습니다.")img_list_np에 이미지가 있는지 확인합니다.- 이미지가 있으면,
plt.imshow(img_list_np[-1])를 사용하여 마지막 이미지를 표시합니다. plt.title("마지막으로 불러온 이미지")로 제목을 설정하고,plt.axis("off")로 축을 숨깁니다.- 이미지가 없으면, “불러온 이미지가 없습니다.”라는 메시지를 출력합니다.
댓글남기기