在Python中,如何将一个图像文件加载到一个numpy数组中,同时支持Exif方向的多个图像?
正如标题所说,我正在尝试将图像文件加载到支持Exif方向的numpy数组中。我这样做是为了防止倒置和侧面图像用于人脸识别,因为它不适用于iPhone拍摄的照片。要修复我正在使用此脚本的问题,请执行以下操作:在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() 这适用于一个图像,但
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上编写的一些代码: