Извлечение переднего плана из отдельных кадров с использованием opencv для python

Проблема

Я работаю с камерой, которая помещает снимок в Интернет каждые 5 секунд или около того. Камера контролирует линию людей. Я хочу, чтобы мой сценарий мог рассказать мне, сколько времени у людей.

Что я пробовал

Я новичок в opencv, поэтому любая помощь очень ценится. Я могу предоставить любые дополнительные данные по запросу.

Заметка:

Я не так сильно ищу кого-то, чтобы решить общую проблему, поскольку я просто пытаюсь выяснить способ отделить людей от фона. Тем не менее, я открыт для решения проблемы другим способом, если вы считаете, что у вас есть лучшее решение.

EDIT: Вот пример изображения по запросу: Образец

  • Python: форматирование выходной строки, выравнивание по правому краю
  • Как отправить статус в строку состояния VIM после вызова пользовательской функции VIM (Python)
  • Учебник Django Celery не возвращает результаты
  • Добавление перегрузки в поведении Python x + y vs y + x
  • Как сделать шахматную доску в numpy?
  • используя scrapy для удаления веб-сайта asp.net с помощью кнопок javascript и ajax-запросов
  • Как вызвать функцию javascript из PyQT
  • Генерировать случайные числа, реплицируя произвольное распределение
  • One Solution collect form web for “Извлечение переднего плана из отдельных кадров с использованием opencv для python”

    Я понял! @QED помог мне туда добраться. В принципе, вы не можете сделать это только с одним изображением. Для сравнения вам понадобится по крайней мере 2 кадра, поэтому алгоритм может определить, что отличает (передний план) и что то же самое (фон). Поэтому я взял 2 кадра и зациклился на них, чтобы «обучить» алгоритм. Вот мой код:

     import numpy as np import cv2 i = 1 while(1): fgbg = cv2.BackgroundSubtractorMOG() while(i < 3): print 'img' + `i` + '.jpg' frame = cv2.imread('img' + `i` + '.jpg') fgmask = fgbg.apply(frame) cv2.imshow('frame', fgmask) i += 1 k = cv2.waitKey(30) & 0xff if k == 27: break cv2.destroyAllWindows() в import numpy as np import cv2 i = 1 while(1): fgbg = cv2.BackgroundSubtractorMOG() while(i < 3): print 'img' + `i` + '.jpg' frame = cv2.imread('img' + `i` + '.jpg') fgmask = fgbg.apply(frame) cv2.imshow('frame', fgmask) i += 1 k = cv2.waitKey(30) & 0xff if k == 27: break cv2.destroyAllWindows() 

    И вот результат из двух последовательных изображений!

    введите описание изображения здесь

    Python - лучший язык программирования в мире.