728x90
반응형
오늘은 이미지를 다루는 Pillow 라이브러리와
수치 연산에 자주 사용하는 numpy 라이브러리를 사용하여
여러장의 이미지를 numpy 배열로 로드하는 방법을 소개하도록 하겠습니다
#라이브러리 설치
!pip install Pillow
Pillow 라이브러리를 설치해줍니다
만약 numpy 라이브러리가 설치되어 있지 않다면, numpy 라이브러리도 설치해줍니다
#라이브러리 호출
import os
import numpy as np
from PIL import Image
사용할 라이브러리를 호출합니다
#변환할 이미지 목록 불러오기
image_path = './dataset/video1_trim/'
img_list = os.listdir(image_path) #디렉토리 내 모든 파일 불러오기
img_list_jpg = [img for img in img_list if img.endswith(".jpg")] #지정된 확장자만 필터링
print ("img_list_jpg: {}".format(img_list_jpg))
사용할 이미지 목록을 불러옵니다
저는 여러장의 이미지를 numpy로 변환할 예정이기 때문에
디렉토리 내에 jpg로 끝나는 모든 파일들을 불러오도록 합니다
img_list_np = []
for i in img_list_jpg:
img = Image.open(image_path + i)
img_array = np.array(img)
img_list_np.append(img_array)
print(i, " 추가 완료 - 구조:", img_array.shape) # 불러온 이미지의 차원 확인 (세로X가로X색)
#print(img_array.T.shape) #축변경 (색X가로X세로)
이미지를 numpy형태로 변환하여 저장할 빈 리스트를 하나 생성합니다
앞서 저장한 이미지들을 for문을 돌면서
하나씩 접근하여 Image로 열고, np.array를 사용하여 numpy 형태로 변환합니다
그리고 이를 앞서 생성한 빈 리스트에 추가합니다
img_np = np.array(img_list_np) #리스트를 numpy로 변환
print(img_np.shape)
모든 이미지들을 추가하였다면, 리스트 전체를 numpy 형태로 변환합니다
최종적으로 여러장의 이미지를 numpy 형태로 저장할 수 있게 됩니다.
하지만 이 포스팅에서 소개한 방법은 상당히 나이브한 방법이고
OpenCV를 사용하여 좀더 쉽게 로드할 수도 있습니다
이외에도 더 다양한 방법이 있는데, 이는 다음에 소개하도록 하겠습니다
더 좋은 방법이나 포스트에서 고쳐야할 것이 있다면 댓글로 알려주세요 :)
728x90
반응형
'Dev > PYTHON 파이썬' 카테고리의 다른 글
[python] 문자열에서 여러 문자 바꾸기 | 문자열 치환 | replace | transmake | translate | 정규표현식 | sub | re (0) | 2023.01.21 |
---|---|
[OpenCV] 동영상 재생하기 | 웹캠 재생하기 | 웹캠으로 들어온 영상 저장하기 (VideoCapture, VideoWriter) (0) | 2022.03.16 |
[OpenCV] 파이썬으로 동영상 프레임 초단위 저장/캡처하기 (Save Video Frame per Second by Python) (4) | 2022.01.04 |
파이썬 가상환경(Virtual Environments) 설치/생성/복제/삭제 (0) | 2021.10.28 |
[파이썬 프로젝트#1-1] 파이썬이란? (0) | 2020.09.06 |