Вот один из способов сделать это в Python / OpenCV.
Обратите внимание, что я инвертирую ваше изображение, чтобы вернуть ваш оригинал. Пропустите инвертирование, если вы начинаете с фактического оригинала, прежде чем инвертировать его.
- Считайте ввод и инвертируйте
- Преобразовать в серый
- Порог, чтобы сделать маска
- Создание белого изображения размером с входной сигнал
- Смешайте два вместе с обувью над белым, используя маску для контроля, которая показывает
- Сохраните результаты
Ввод:
import cv2
import numpy as np
# load image
img = cv2.imread("shoe_inverted.jpg")
# invert the polarity
img = 255 - img
# convert to gray
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# threshold image and make 3 channels as mask
mask = cv2.threshold(gray, 32, 255, cv2.THRESH_BINARY)[1]
mask = cv2.merge([mask,mask,mask])
# create white image for background of result
white = np.full_like(img, (255,255,255))
# apply mask to img and white
result = np.where(mask!=0, img, white)
# write result to disk
cv2.imwrite("shoe_inverted_inverted.jpg", img)
cv2.imwrite("shoe_mask.jpg", mask)
cv2.imwrite("shoe_result.jpg", result)
cv2.imshow("IMAGE", img)
cv2.imshow("MASK", mask)
cv2.imshow("RESULT", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Инвертированный ввод для возврата к оригиналу:
Маска (после порога для очистки границы):
Результат: