Ответ 1
Замените create... на
fgbg = cv2.BackgroundSubtractorMOG()
Я пытаюсь использовать метод 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.
Заранее спасибо
Замените create... на
fgbg = cv2.BackgroundSubtractorMOG()
cv2.createbackgroundSubstractor()
работает в cv 3.0 для использования 2.4.x cv2.BackgroundSubstractor()
Спасибо за комментарии. Кажется, что createBackgroundSubtractorMOG2() не был добавлен в OpenCV 2.4, но он присутствует в главной ветки, которая может быть скомпилирована из github.
Я нахожу, что cv2.BackgroundSubtractor() работает для того, что мне нужно в данный момент.
Подробнее см. http://code.opencv.org/issues/2812#note-5.
Я использую
>>> import cv2
>>> cv2.__version__
>>> 3.2.0
и python 2.7.12. Хотя я пытался использовать cv2.createBackgroundSubtractorMOG(), я получил то же сообщение об ошибке (также пробовал без "create..." ). Но я был удивлен, когда обнаружил, что cv2.createBackgroundSubtractorKNN() имеет ту же функциональность... и работает тестовый код:) 2 дня я был в замешательстве и не мог найти, где проблема.
Я использую 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>
>>> 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 Он работает
Согласно 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()