Удалить значок из изображения JPEG - PullRequest
2 голосов
/ 12 октября 2019

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

Может быть, с помощью hexdump или еще чего-нибудь?

Вот пример изображения.

enter image description here

Есть ли способ удалить значок сердца из него?

* Мне не нужно это изображение, это простонапример

1 Ответ

1 голос
/ 12 октября 2019

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


После определения порога цвета с HSV нижнего и верхнего диапазона мы получим эту маску

enter image description here

Чтобы удалить сердце, мы инвертируем маску, которая представляет все области изображения, которые мы хотим сохранить, затем побитово - и с входным изображением. Поскольку вы не указали, на что хотите его заменить, я просто закрасил удаленную область белым. Вот реализация с использованием Python и OpenCV

enter image description here

import numpy as np
import cv2

image = cv2.imread('1.jpg')
original = image.copy()
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower = np.array([0, 138, 155])
upper = np.array([179, 255, 255])
mask = cv2.inRange(hsv, lower, upper)
invert = 255 - mask
result = cv2.bitwise_and(original, original, mask=invert)
result[invert==0] = (255,255,255)

cv2.imshow('mask', mask)
cv2.imshow('result', result)
cv2.waitKey()
...