在Python中,如何将一个图像文件加载到一个numpy数组中,同时支持Exif方向的多个图像?

在Python中,如何将一个图像文件加载到一个numpy数组中,同时支持Exif方向的多个图像?,python,face-recognition,Python,Face Recognition,正如标题所说,我正在尝试将图像文件加载到支持Exif方向的numpy数组中。我这样做是为了防止倒置和侧面图像用于人脸识别,因为它不适用于iPhone拍摄的照片。要修复我正在使用此脚本的问题,请执行以下操作: import matplotlib.pyplot as plt import image_to_numpy img = image_to_numpy.load_image_file("my_file.jpg") plt.imshow(img) plt.show() 这适用于一个图像,但

正如标题所说,我正在尝试将图像文件加载到支持Exif方向的numpy数组中。我这样做是为了防止倒置和侧面图像用于人脸识别,因为它不适用于iPhone拍摄的照片。要修复我正在使用此脚本的问题,请执行以下操作:

import matplotlib.pyplot as plt
import image_to_numpy

img = image_to_numpy.load_image_file("my_file.jpg")

plt.imshow(img)
plt.show()
这适用于一个图像,但我想创建一个循环来处理文件夹中的多个图像,并将其保存到另一个文件夹中。你知道怎么做吗


你是在说这样的事吗。我很确定我在下面的内容中遗漏了一些东西:

import glob
import os
for i in range(10)
  filepath = glob.glob(os.path.join('path/images/', *.jpg))
  try:
      image=Image.open(filepath)

      for orientation in ExifTags.TAGS.keys():
          if ExifTags.TAGS[orientation]=='Orientation':
              break

      exif=dict(image._getexif().items())

      if exif[orientation] == 3:
          image=image.rotate(180, expand=True)
      elif exif[orientation] == 6:
          image=image.rotate(270, expand=True)
      elif exif[orientation] == 8:
          image=image.rotate(90, expand=True)

    image.save(filepath)
    image.close()
  except (AttributeError, KeyError, IndexError):
    # cases: image don't have getexif
    pass ```

我找到了这个答案:

您需要做的唯一更改是在
image=image.open(filepath)
中更改
filepath
到原始图像文件路径和此文件路径,
image.save(filepath)
到要将图像保存到的文件路径

可以使用glob.glob()在指定目录中获取所选格式的所有图像文件路径,方法如下:

import glob
import os

filepaths = glob.glob(os.path.join('path', 'to', 'my', 'directory', '*.jpg'))

然后做一个for循环,打开图像,修改它们,最后将它们保存在您选择的目录中。希望这能有所帮助。

您正在谈论类似的内容:请参见上文。
glob.glob()
将返回满足指定要求的所有文件路径的列表。你需要循环所有这些。下面是我在pastebin上编写的一些代码: