폴더의 모든 이미지에 액세스하여 매트릭스에 저장해야합니다. 내가 MATLAB을 사용하여 할 수 있었고, 여기에 코드입니다 :파이썬을 사용하여 이미지 행렬
input_dir = 'C:\Users\Karim\Downloads\att_faces\New Folder';
image_dims = [112, 92];
filenames = dir(fullfile(input_dir, '*.pgm'));
num_images = numel(filenames);
images = [];
for n = 1:num_images
filename = fullfile(input_dir, filenames(n).name);
img = imread(filename);
img = imresize(img,image_dims);
end
하지만 난 파이썬을 사용하여 작업을 수행하는 데 필요한 여기 내 파이썬 코드입니다 :
import Image
import os
from PIL import Image
from numpy import *
import numpy as np
#import images
dirname = "C:\\Users\\Karim\\Downloads\\att_faces\\New folder"
#get number of images and dimentions
path, dirs, files = os.walk(dirname).next()
num_images = len(files)
image_file = "C:\\Users\\Karim\\Downloads\\att_faces\\New folder\\2.pgm"
im = Image.open(image_file)
width, height = im.size
images = []
for x in xrange(1, num_images):
filename = os.listdir(dirname)[x]
img = Image.open(filename)
img = im.convert('L')
images[:, x] = img[:]
하지만 난이 오류를 얻고있다 : IOError : [Errno 2] 해당 파일이나 디렉터리가 없습니다 : '10 .pgm ' 파일이 있지만.
cwd가 이미지와 같은 위치에 있지 않으면 파일의 절대 경로를'Image.open'에 전달해야합니다. 'os.path.join (path, filename)'이 작동해야합니다. – GP89
@ GP89 : 'filename = os.list.dir (dirname) [x]'를 'filename = os.path.join (dirname, x)'으로 바꿔야한다는 뜻입니까? – user2229953
아니요,'os.listdir' 라인에서 돌아 오는'filename'은 단지 "10.pgm"입니다. 그냥 전달하면 스크립트가 실행되는 현재 디렉토리에서 찾게됩니다. 새로운 변수'filepath = os.path.join (path, filename)'을 만들고'filepath'를'Image.open'에 전달하십시오. 그러면 IOError를 얻지 않아야합니다. 이것은'filepath' 값이 절대 경로가 될 것이기 때문에 효과가 있습니다. "C : \\ Users \\ Karim \\ Downloads \\ att_faces \\ 새 폴더 \\ 10.pgm"\ – GP89