почему skimage.io.imread предупреждает «поврежденные данные exif», а cv2.imread - нет? - PullRequest
2 голосов
/ 07 августа 2020

Я использую pytorch для создания классификатора нейронной сети.

Я где-то читал, что многие python пакеты используют один и тот же c ++ api при чтении изображения, поэтому я подумал, что skimage.io.imread и cv2. imread будет таким же, за исключением порядка каналов. Однако я получил подобное предупреждение в skimage,

/xxx/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:766: UserWarning: Possibly corrupt EXIF data.  Expecting to read 1245184 bytes but only got 0. Skipping tag 0
  " Skipping tag %s" % (size, len(data), tag)
/xxx/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:785: UserWarning: Corrupt EXIF data.  Expecting to read 12 bytes but only got 11. 
  warnings.warn(str(msg))

, но cv2 работает без предупреждений.

Мой код выглядит следующим образом:

  • в наборе данных
    ...

    def __getitem__(self, index):
        file = os.path.join(self.root_dir, self.files[index])
        image = io.imread(file)
        # image = cv2.imread(file)
        if self.transform:
            image = self.transform(image)
        return image
  • преобразовывает:
transform = transforms.Compose([
    transforms.ToPILImage(),
    transforms.Resize((128, 128)),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor()
])
...