use*_*953 1 python numpy image-processing
我需要访问文件夹中的所有图像并将其存储在矩阵中.我能够使用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
Run Code Online (Sandbox Code Playgroud)
但我需要使用python来完成它,这是我的python代码:
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[:]
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:IOError:[Errno 2]没有这样的文件或目录:'10 .pgm'虽然文件存在.
我不太清楚你的最终目标是什么,但尝试更像这样的东西:
import numpy as np
import Image
import glob
filenames = glob.glob('/path/to/your/files/*.pgm')
images = [Image.open(fn).convert('L') for fn in filenames]
data = np.dstack([np.array(im) for im in images])
Run Code Online (Sandbox Code Playgroud)
假设所有图像具有相同的尺寸,这将产生宽度x高度x num_images numpy数组.
但是,您的图像将是未分类的,因此您可能希望这样做filenames.sort()
.
此外,您可能想要或不想要3D numpy数组,但这完全取决于您实际在做什么.如果您只想单独操作每个"框架",那么不要费心将它们堆叠成一个巨大的阵列.
归档时间: |
|
查看次数: |
4485 次 |
最近记录: |