1

我正在尝试在 python 中打开一组图像,但我对如何做到这一点有点困惑。我知道如何处理一张图像,但我不知道如何处理数百张图像。

我有一个包含几百个 .jpg 图像的文件夹。我想将它们加载到 python 程序中以对它们进行机器学习。我怎样才能正确地做到这一点?

我还没有任何代码,因为我已经在为此苦苦挣扎。

但我在伪代码中的想法是

dataset = load(images)
do some manipulations on it

我以前是怎么做的:

from sklearn.svm import LinearSVC
from numpy import genfromtxt,savetxt

load = lambda x: genfromtxt(open(x,"r"),delimiter = ",",dtype = "f8")[1:]
dataset = load("train.csv")
train = [x[1:] for x in dataset]
target = [x[0] for x in dataset]
test = load("test.csv")

linear = LinearSVC()
linear.fit(train,target)

savetxt("digit2.csv",linear.predict(test),delimiter = ",", fmt = "%d")

由于格式,它工作得很好。所有数据都在一个文件中。

4

2 回答 2

2

如果您想单独处理每个图像(假设您使用的是 PIL 或 Pillow),请按顺序执行:

import os
from glob import glob

try:
    # PIL
    import Image
except ImportError:
    # Pillow
    from PIL import Image

def process_image(img_path):
    print "Processing image: %s" % img_path
    # Open the image
    img = Image.open(img_path)

    # Do your processing here
    print img.info

    # Not strictly necessary, but let's be explicit:
    # Close the image
    del img

images_dir = "/home/user/images"

if __name__ == "__main__":
    # List all JPEG files in your directory
    images_list = glob(os.path.join(images_dir, "*.jpg"))

    for img_filename in images_list:
        img_path = os.path.join(images_dir, img_filename)
        process_image(img_path)
于 2013-10-13T15:38:59.610 回答
1

阅读有关 python glob 模块的文档,并在循环中依次处理每个图像。

于 2013-10-13T15:21:02.430 回答