Подтвердить что ты не робот

Открытый модуль OpenCV2 Python createBackgroundSubtractor не найден

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

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' не имеет атрибута 'createBackgroundSubtractorMOG2'

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

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

Заранее спасибо

4b9b3361

Ответ 1

Замените create... на

fgbg = cv2.BackgroundSubtractorMOG()

Ответ 2

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

Ответ 3

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

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

Подробнее см. http://code.opencv.org/issues/2812#note-5.

Ответ 4

Я использую

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

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

Ответ 5

Я использую OpenCV-python 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>

Ответ 6

>>> 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 Он работает

Ответ 7

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

Я тестировал его на 3.4.0-dev и работал.

Пример кода:

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()