Вы можете попробовать этот пример кода для удаления фона.
Чтение файла изображения
img = cv2.imread(Image1.jpg)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
Преобразовать в оттенки серого
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
Применить пороговое значение
принимаем постоянный порог для простоты.
thresh = 127
im_b = cv2.threshold(img_gray, thresh, 255, cv2.THRESH_BINARY)[1]
Находим контур фигуры
contours, hierarchy = cv2.findContours(image = im_b, mode = cv2.RETR_TREE, method = cv2.CHAIN_APPROX_SIMPLE)
Сортируем контуры
contours = sorted(contours, key = cv2.contourArea, reverse= True)
Маскирование объекта на основе контура
mask = np.ones(img.shape[:2], np.uint8)
mask.fill(255)
cv2.drawContours(mask, contours, contourIdx =0 , color =0, thickness = -1)
new_img = cv2.add(im_b, mask)
cv2.imwrite('masked.jpg',new_img)
cv2.imshow('masked.jpg')
Учитывая ваш образец изображения, я стремился вырезать единственный обнаруженный объект на основе контура.
Надеюсь, это поможет. Ура, приятель !!!