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)
давайте предположим, что ваше изображение
вы можете получить инвертированное изображение, используя следующий код
img_inverted = 255 - img
и ваш ограничивающий прямоугольник
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
то же самое будет работать для нескольких ограничительных рамок
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, ...]