2017-01-05 4 views
1

Я использую OpenCV 3.1 с Python 2.7. Я пытаюсь отделить фон и объекты переднего плана и использовал это:Как отделить фон от изображения?

img = cv2.imread('testimage.jpg', cv2.IMREAD_COLOR); 
fgbg = cv2.BackgroundSubtractorMOG2(); 
fgmask = fgbg.apply(img); 
cv2.imshow("backsep",fgmask); 

Когда я запускаю это, я получаю следующее сообщение об ошибке:

Traceback (most recent call last): File "C:/Users/R.K.singh/Desktop/Image processing/background-sep.py", line 20, in fgbg = cv2.BackgroundSubtractorMOG2(); AttributeError: 'module' object has no attribute 'BackgroundSubtractorMOG2'

Пожалуйста, помогите.

P.S: Этот вопрос задан раньше, однако ни одно из решений не работает.

+1

Я думаю, что это 'fgbg = cv2.createBackgroundSubtractorMOG2() ; 'вы должны использовать, если обратиться к документации

+0

@AxelB. я получаю ошибку: Traceback (последний последний вызов): Файл «C: \ Users \ RKsingh \ Desktop \ Обработка изображений \ background-sep.py», строка 21, в fgmask = fgbg.apply (img) ; Ошибка: C: \ builds \ master_PackSlaveAddon-win32-vc12-static \ opencv \ modules \ python \ src2 \ cv2.cpp: 163: error: (-215) Обычно данные должны быть NULL! в функции NumpyAllocator :: allocate – singhuist

ответ

3

Как предложил Аксель cv2.BackgroundSubtractorMOG2() используется для удаления фона из видеокадров.

Что касается изображений, вы можете использовать алгоритм GrabCut . Документация OpenCV содержит tutorial, включая соответствующий код Python.

Вы также можете смотреть эти видео для лучшего понимания изображения Сегментация:

Смежные вопросы