Передача одной ошибки изображения через imgaug - PullRequest
0 голосов
/ 30 марта 2020

Я нашел пример на: https://github.com/aleju/imgaug Вы можете проверить пример под этим: https://github.com/aleju/imgaug#example -augment-images-and-bounding-boxes

Я передаю это изображение через него: enter image description here

Это код:

import numpy as np
import imgaug as ia
import imgaug.augmenters as iaa
import cv2
images = cv2.imread("meter0008.jpg")  # two example images

bbs = 
    [ia.BoundingBox(x1=10.5, y1=15.5, x2=30.5, y2=50.5)],
    [ia.BoundingBox(x1=10.5, y1=20.5, x2=50.5, y2=50.5),
     ia.BoundingBox(x1=40.5, y1=75.5, x2=70.5, y2=100.5)]
]

seq = iaa.Sequential([
    iaa.AdditiveGaussianNoise(scale=0.05*255),
    iaa.Affine(translate_px={"x": (1, 5)})
])

images_aug, bbs_aug = seq(images=images, bounding_boxes=bbs)
cv2.imwrite("hi.jpg", images_aug[0])

Но он выдает эту ошибку:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-e808c2922d9a> in <module>
     16 ])
     17 
---> 18 images_aug, bbs_aug = seq(images=images, bounding_boxes=bbs)
     19 cv2.imwrite("hi.jpg", images_aug[0])

c:\users\fatima.arshad\appdata\local\continuum\anaconda2\envs\web_scraping\lib\site-packages\imgaug\augmenters\meta.py in __call__(self, *args, **kwargs)
   2006     def __call__(self, *args, **kwargs):
   2007         """Alias for :func:`~imgaug.augmenters.meta.Augmenter.augment`."""
-> 2008         return self.augment(*args, **kwargs)
   2009 
   2010     def pool(self, processes=None, maxtasksperchild=None, seed=None):

c:\users\fatima.arshad\appdata\local\continuum\anaconda2\envs\web_scraping\lib\site-packages\imgaug\augmenters\meta.py in augment(self, return_batch, hooks, **kwargs)
   1977         )
   1978 
-> 1979         batch_aug = self.augment_batch_(batch, hooks=hooks)
   1980 
   1981         # return either batch or tuple of augmentables, depending on what

c:\users\fatima.arshad\appdata\local\continuum\anaconda2\envs\web_scraping\lib\site-packages\imgaug\augmenters\meta.py in augment_batch_(self, batch, parents, hooks)
    594         elif isinstance(batch, UnnormalizedBatch):
    595             batch_unnorm = batch
--> 596             batch_norm = batch.to_normalized_batch()
    597             batch_inaug = batch_norm.to_batch_in_augmentation()
    598         elif isinstance(batch, Batch):

c:\users\fatima.arshad\appdata\local\continuum\anaconda2\envs\web_scraping\lib\site-packages\imgaug\augmentables\batches.py in to_normalized_batch(self)
    208                 self.keypoints_unaug, shapes),
    209             bounding_boxes=nlib.normalize_bounding_boxes(
--> 210                 self.bounding_boxes_unaug, shapes),
    211             polygons=nlib.normalize_polygons(
    212                 self.polygons_unaug, shapes),

c:\users\fatima.arshad\appdata\local\continuum\anaconda2\envs\web_scraping\lib\site-packages\imgaug\augmentables\normalization.py in normalize_bounding_boxes(inputs, shapes)
    381     assert ntype == "iterable-iterable-BoundingBox", (
    382         "Got unknown normalization type '%s'." % (ntype,))
--> 383     _assert_exactly_n_shapes_partial(n=len(inputs))
    384     return [BoundingBoxesOnImage(attr_i, shape=shape)
    385             for attr_i, shape

c:\users\fatima.arshad\appdata\local\continuum\anaconda2\envs\web_scraping\lib\site-packages\imgaug\augmentables\normalization.py in _assert_exactly_n_shapes(shapes, n, from_ntype, to_ntype)
     58             "is recommended to provide imgaug standard classes, e.g. "
     59             "KeypointsOnImage for keypoints instead of lists of "
---> 60             "tuples." % (from_ntype, to_ntype, n, len(shapes)))
     61 
     62 

ValueError: Tried to convert data of form 'iterable-iterable-BoundingBox' to 'List[BoundingBoxesOnImage]'. This required exactly 2 corresponding image shapes, but instead 4160 were provided. This can happen e.g. if more images were provided than corresponding augmentables, e.g. 10 images but only 5 segmentation maps. It can also happen if there was a misunderstanding about how an augmentable input would be parsed. E.g. if a list of N (x,y)-tuples was provided as keypoints and the expectation was that this would be parsed as one keypoint per image for N images, but instead it was parsed as N keypoints on 1 image (i.e. 'shapes' would have to contain 1 shape, but N would be provided). To avoid this, it is recommended to provide imgaug standard classes, e.g. KeypointsOnImage for keypoints instead of lists of tuples.

Объяснение: Я только изменил код, чтобы прочитать это изображение. Но, похоже, выдает какую-то ошибку относительно ограничивающих рамок. Я не уверен, как это исправить

...