Фоновый вычитатель возвращает маску, в которой объект переднего плана - белый, а тени - серый.
Вы можете использовать thresholding , чтобы создать новую маску без тени или только с тенью.
Используйте маску без теней, чтобы получить только передний план.
Используйте маску только с тенью, чтобы заменить тень на фоне (опорным фоновым изображением).
Результат:
Код:
import cv2
import numpy as np
# load image / mask
mask = cv2.imread("mask.png",0)
#threshold mask
ret, foreground = cv2.threshold(mask, 200, 255, cv2.THRESH_BINARY)
ret, shadow = cv2.threshold(mask, 200, 255, cv2.THRESH_TOZERO_INV)
# stack images vertically
res = np.concatenate((mask,foreground,shadow),axis=0)
#show image
cv2.imshow("Result",res)
cv2.waitKey(0)
cv2.destroyAllWindows()