Я нашел пример на: https://github.com/aleju/imgaug Вы можете проверить пример под этим: https://github.com/aleju/imgaug#example -augment-images-and-bounding-boxes
Я передаю это изображение через него:
Это код:
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.
Объяснение: Я только изменил код, чтобы прочитать это изображение. Но, похоже, выдает какую-то ошибку относительно ограничивающих рамок. Я не уверен, как это исправить