Unverified 提交 15e8c4c1 authored 作者: jdfr's avatar jdfr 提交者: GitHub

take EXIF orientation tags into account when fixing corrupt images (#5270)

* take EXIF orientation tags into account when fixing corrupt images * fit 120 char * sort imports * Update local exif_transpose comment We have a local inplace version that is faster than the official as the image is not copied. AutoShape() uses this for Hub models, but here it is not important as the datasets.py usage is infrequent (AutoShape() it is applied every image). * Update datasets.py Co-authored-by: 's avatarGlenn Jocher <glenn.jocher@ultralytics.com>
上级 db3bbdde
...@@ -22,7 +22,7 @@ import numpy as np ...@@ -22,7 +22,7 @@ import numpy as np
import torch import torch
import torch.nn.functional as F import torch.nn.functional as F
import yaml import yaml
from PIL import Image, ExifTags from PIL import Image, ImageOps, ExifTags
from torch.utils.data import Dataset from torch.utils.data import Dataset
from tqdm import tqdm from tqdm import tqdm
...@@ -69,7 +69,7 @@ def exif_size(img): ...@@ -69,7 +69,7 @@ def exif_size(img):
def exif_transpose(image): def exif_transpose(image):
""" """
Transpose a PIL image accordingly if it has an EXIF Orientation tag. Transpose a PIL image accordingly if it has an EXIF Orientation tag.
From https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose()
:param image: The image to transpose. :param image: The image to transpose.
:return: An image. :return: An image.
...@@ -896,7 +896,7 @@ def verify_image_label(args): ...@@ -896,7 +896,7 @@ def verify_image_label(args):
with open(im_file, 'rb') as f: with open(im_file, 'rb') as f:
f.seek(-2, 2) f.seek(-2, 2)
if f.read() != b'\xff\xd9': # corrupt JPEG if f.read() != b'\xff\xd9': # corrupt JPEG
Image.open(im_file).save(im_file, format='JPEG', subsampling=0, quality=100) # re-save image ImageOps.exif_transpose(Image.open(im_file)).save(im_file, 'JPEG', subsampling=0, quality=100)
msg = f'{prefix}WARNING: {im_file}: corrupt JPEG restored and saved' msg = f'{prefix}WARNING: {im_file}: corrupt JPEG restored and saved'
# verify labels # verify labels
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论