отделенное фоновое изображение - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь отделить изображение человека от фона.Сначала я запечатлел фон, который в моем случае будет статичным, а затем снял изображение рукой.Затем я использовал cv2.absdiff (), чтобы вычесть оба изображения, но результат не такой, как ожидалось.Пожалуйста, помогите мне сделать это правильно.Вот вывод:

Original_Image

Background_Image

Output

Код:

while(cap.isOpened()):

    grabbed, frame = cap.read()

    if not grabbed:
        continue

    Original_Image = frame.copy()
    Original_Image = cv2.cvtColor(contourFrame,cv2.COLOR_BGR2GRAY)

    Output_Image = cv2.absdiff(Background_Image, Original_Image)

1 Ответ

0 голосов
/ 12 сентября 2018

Если вы только вычитаете фоновое изображение из изображения переднего плана, вы не можете отделить объекты переднего плана, потому что вы изменяете их, вычитая фон, который они скрывают от них (что приведет к появлению двух уродливых темных линий, видимых на вашем изображении),Возможное решение этого: вычитать фон из переднего плана только в областях, где оба изображения равны (или сопоставимы с произвольным допуском для учета слегка измененных условий освещения).Для изображения вам, скорее всего, нужно добавить определенный допуск для различий между пикселями фона и переднего плана (может быть, 15-25?), Потому что рука блокирует входящий свет и, следовательно, фоновое изображение немного светлее, чем изображение переднего плана.

...