2013-09-10 3 views
17

Я пытаюсь использовать метод cv2.createBackgroundSubtractorMOG2() в Python. Я пытался как на моем Mac и на моем Raspberry Pi, и получить ту же ошибку при запуске следующей строки коды:OpenCV2 Python createBackgroundSubtractor module не найден

fgbg = cv2.createBackgroundSubtractorMOG2() 

кода я использую берется из https://github.com/abidrahmank/OpenCV2-Python-Tutorials/blob/master/source/py_tutorials/py_video/py_bg_subtraction/py_bg_subtraction.rst

я получаю следующее ошибка при выполнении этого кода:

fgbg = cv2.createBackgroundSubtractorMOG2() AttributeError: 'module' object has no attribute 'createBackgroundSubtractorMOG2'

я не могу использовать любой из методов createBackgroundSubtractor.

Я пытался решить это на прошлый день, но мне не повезло в Интернете, так как ограниченная поддержка cv2 на Python.

Заранее благодарен

+0

Какая версия OpenCV связывания вы используете? – jabaldonedo

+0

Я использую OpenCV 2.4.6, который выглядит как последняя версия OpenCV с Python 2.7.5 – user2765323

+1

Это странно, потому что это должно было быть добавлено в последней версии (я еще не проверил ее). Однако вы можете использовать 'cv2.BackgroundSubtractorMOG()' вместо 'cv2.createBackgroundSubtractorMOG2()' – jabaldonedo

ответ

4

Спасибо за комментарии. Кажется, что createBackgroundSubtractorMOG2() не был добавлен в OpenCV 2.4, но он присутствует в главной ветви, которая может быть скомпилирована из github.

Я нахожу, что cv2.BackgroundSubtractor() работает для того, что мне нужно в данный момент.

Для получения более подробной информации см. http://code.opencv.org/issues/2812#note-5.

12

cv2.createbackgroundSubstractor() работы в резюме 3.0 для использования 2.4.x cv2.BackgroundSubstractor()

+0

IMO это не ответ, а комментарий. –

1

Я использую OpenCV-питон 2,4 .9 и Python2.7.8.

В моей среде, cv2.BackgroundSubtracorMOG и cv2.BackgroundSubtractorMOG2 доступны.

Вы можете узнать, какие атрибуты доступны с помощью «help (cv2)» в вашей оболочке python.

BackgroundSubtractorMOG(...) 
    BackgroundSubtractorMOG([history, nmixtures, backgroundRatio[, noiseSigma]]) -> <BackgroundSubtractorMOG object> 

BackgroundSubtractorMOG2(...) 
    BackgroundSubtractorMOG2([history, varThreshold[, bShadowDetection]]) -> <BackgroundSubtractorMOG2 object> 
3

Я использую

>>> import cv2 
>>> cv2.__version__ 
>>> 3.2.0 

и питона 2.7.12. Хотя я пытался использовать cv2.createBackgroundSubtractorMOG(), я получил то же сообщение об ошибке (также пробовал без «create ...»). Но я был удивлен, когда обнаружил, что cv2.createBackgroundSubtractorKNN() имеет ту же функциональность ... и работает тестовый код :) 2 дня Я был в замешательстве и не мог найти, где проблема.

0
>>> import cv2 
>>> cv2.__version__ 
>>> 3.2.0 
>>>bg_model = cv2.BackgroundSubtractorMOG2(0, 10) 
Traceback (most recent call last): 
    File "/home/manivannan/pythonexamle/opencv/Samples/hand-gesture-recognition-opencv/HandRecognition.py", line 233, in <module> 
    bg_model = cv2.BackgroundSubtractorMOG2(0, 10) 
AttributeError: 'module' object has no attribute 'BackgroundSubtractorMOG2' 
>>>bg_model = cv2.createBackgroundSubtractorMOG2(0, 10) 

Использование createBackgroundSubtractorMOG2 вместо BackgroundSubtractorMOG2 Это работа

0

https://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html По Вы должны использовать cv.bgsegm.createBackgroundSubtractorMOG()

Я тестировал его на 3.4.0-разработчика, и она работала.

Пример кода:

import numpy as np 
import cv2 as cv 
cap = cv.VideoCapture('vtest.avi') 
fgbg = cv.bgsegm.createBackgroundSubtractorMOG() 
while(1): 
    ret, frame = cap.read() 
    fgmask = fgbg.apply(frame) 
    cv.imshow('frame',fgmask) 
    k = cv.waitKey(30) & 0xff 
    if k == 27: 
     break 
cap.release() 
cv.destroyAllWindows() 

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

  • Нет связанных вопросов^_^