Есть ли способ инвертировать фон, находящийся за пределами координатной коробки. используя питон? - PullRequest
0 голосов
/ 05 ноября 2019

Pythonists!

Я начинающий питонист.

Я использую YOLO V3 для распознавания и локализации изображения с помощью коробок с наградами. Это даст координаты bountybox.

Есть ли какой-либо способ инвертировать фон изображения, который находится вне рамок bounty, с помощью любой из библиотек изображений python?

Давайте предположим,ситуация, когда мы получили несколько координат bountybox из изображения.

У меня не так много времени, чтобы исследовать новые вещи. Я делаю проекты для компании XYZ.

Спасибо за продвижение.!

1 Ответ

0 голосов
/ 08 ноября 2019
import cv2
import numpy as np

# second parameter is 0. it means to read the image in grayscale
# just for example
img = cv2.imread(path_to_your_image, 0)

давайте предположим, что ваше изображение

original image

вы можете получить инвертированное изображение, используя следующий код

img_inverted = 255 - img

enter image description here

и ваш ограничивающий прямоугольник

x, y, w, h = 100, 50, 120, 120

x, y - это верхняя левая координата ограничивающего прямоугольника. w, h - ширина и высота ограничительной рамки

Вы можете инвертировать фон изображения, который находится за пределами ограничительной рамки, используя этот код

img_inverted[y:y+h, x:x+w, ...] = img[y:y+h, x:x+w, ...]

# note that the first axis is `y` and the second is `x`
# ... — means take all the channels
# in grayscale we have only one channel,
# but this will work even if you have RGB image

enter image description here

то же самое будет работать для нескольких ограничительных рамок

bboxes = [
    [100, 50, 120, 120],
    [10, 10, 20, 50],
    [300, 30, 50, 50],
    [300, 130, 50, 50]]

for bbox in bboxes:
    x, y, w, h = bbox

    img_inverted[y:y+h, x:x+w, ...] = img[y:y+h, x:x+w, ...]

enter image description here

...