Ограничивающий прямоугольник Pixelate ROI и наложение его на исходное изображение с помощью OpenCV - PullRequest
2 голосов
/ 17 января 2020

Позволяет сделать это простым.

У меня есть частный проект для блокирования или пикселирования изображения с помощью рамки в open-cv, что-то вроде цензуры изображения, вдохновленное этой статьей:

https://www.researchgate.net/publication/325746502_Seamless_Nudity_Censorship_an_Image-to-Image_Translation_Approach_based_on_Adversarial_Training

Я нашел способ классификации области цензора с помощью Keras, но до сих пор не знаю, как использовать границу для пикселирования классифицированной области и наложения ее на оригинальное изображение. Любая помощь приветствуется.

Это пример процесса, который я хочу выполнить:

enter image description here

1 Ответ

2 голосов
/ 17 января 2020

Простой метод - извлечь ROI, используя Numpy нарезку, пикселизировать, а затем вставить его обратно в исходное изображение. Я буду использовать технику пикселизации, найденную в , как пикселизировать изображение с помощью OpenCV в Python? . Вот простой пример:


Входное изображение и ROI для извлечения

image image Извлеченный ROI

image

ROI с точками

image

Результат

image

Код

import cv2

def pixelate(image):
    # Get input size
    height, width, _ = image.shape

    # Desired "pixelated" size
    h, w = (16, 16)

    # Resize image to "pixelated" size
    temp = cv2.resize(image, (w, h), interpolation=cv2.INTER_LINEAR)

    # Initialize output image
    return cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST)

# Load image
image = cv2.imread('1.png')

# ROI bounding box coordinates
x,y,w,h = 122,98,283,240

# Extract ROI
ROI = image[y:y+h, x:x+w]

# Pixelate ROI
pixelated_ROI = pixelate(ROI)

# Paste pixelated ROI back into original image
image[y:y+h, x:x+w] = pixelated_ROI

cv2.imshow('pixelated_ROI', pixelated_ROI)
cv2.imshow('image', image)
cv2.waitKey()

Примечание: Координаты ограничительной рамки ROI были найдены с помощью скрипта в , как получить координаты ограничительной рамки ROI без Guess & Check . В вашем случае я предполагаю, что у вас уже есть координаты x,y,w,h ограничительной рамки, полученные с помощью cv2.boundingRect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...