Как повернуть множество изображений под нужным мне углом?
У меня есть множество изображений. Все они повернуты хаотично, под разными углами, то есть если я их буду переворачивать с помощью функции .rotate(90), то некоторые повернуться так как нужно, а другие, которые уже были в нужном расположении сменят угол. Как быть в таком случае, что использовать? Размер изображения: (6736, 4768). Заранее, спасибо!
def rotate_img(input_file):
output_files = []
for i in input_file:
x = cv2.imread(i)
flip_image = cv2.flip(x, 0)
output_files.append(flip_image)
return output_files
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Если фото снято на устройстве с гироскопом (телефон, современный фотоаппарат) то оно пишет в метаданные фото exif куда оно повернуто.
from PIL import Image, ExifTags
try:
image=Image.open(filepath)
for orientation in ExifTags.TAGS.keys():
if ExifTags.TAGS[orientation]=='Orientation':
break
exif = image._getexif()
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
Если таких данных нет или они перетерты, то крутить их придётся вручную.