raspberry pyimagesearch learning failed python opencv background-subtraction

python - pyimagesearch - opencv raspberry



No se ha encontrado el módulo openCV2 Python createBackgroundSubtractor (7)

De acuerdo con https://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html debe usar cv.bgsegm.createBackgroundSubtractorMOG()

Lo probé en 3.4.0-dev y funcionó.

Código de ejemplo:

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

Estoy tratando de usar el método cv2.createBackgroundSubtractorMOG2 () en Python. He intentado tanto en mi Mac como en mi Raspberry Pi, y obtengo el mismo error al ejecutar la siguiente línea de código:

fgbg = cv2.createBackgroundSubtractorMOG2()

El código que estoy usando se toma de https://github.com/abidrahmank/OpenCV2-Python-Tutorials/blob/master/source/py_tutorials/py_video/py_bg_subtraction/py_bg_subtraction.rst

Recibo el siguiente error al ejecutar este código:

fgbg = cv2.createBackgroundSubtractorMOG2 () AttributeError: el objeto ''módulo'' no tiene el atributo ''createBackgroundSubtractorMOG2''

Parece que no puedo usar ninguno de los métodos createBackgroundSubtractor.

He estado tratando de resolver esto durante el último día, pero no he tenido la suerte de buscar en línea, ya que hay un soporte limitado para cv2 en Python.

Gracias por adelantado


Estoy usando

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

y pitón 2.7.12. Mientras intentaba usar cv2.createBackgroundSubtractorMOG () recibí el mismo mensaje de error (también lo intenté sin "crear ..."). Pero me sorprendió cuando descubrí cv2.createBackgroundSubtractorKNN () con la misma funcionalidad ... y el código de prueba funciona :) 2 días estuve confundido y no pude encontrar dónde está el problema.


Estoy usando OpenCV-python 2.4.9 y Python2.7.8.

En mi entorno, cv2.BackgroundSubtracorMOG y cv2.BackgroundSubtractorMOG2 están disponibles.

Puede averiguar qué atributos están disponibles usando "help (cv2)" en su shell de python.

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


Gracias a todos por los comentarios. Parece que createBackgroundSubtractorMOG2 () no se ha agregado a OpenCV 2.4, pero está presente en la rama maestra, que se puede compilar desde github.

Estoy descubriendo que cv2.BackgroundSubtractor () está trabajando para lo que necesito en este momento.

Consulte code.opencv.org/issues/2812#note-5 para obtener más detalles.


Reemplace la creación .... con

fgbg = cv2.BackgroundSubtractorMOG ()


cv2.createbackgroundSubstractor() funciona en cv 3.0 para 2.4.x usa cv2.BackgroundSubstractor()


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

Use createBackgroundSubtractorMOG2 en lugar de BackgroundSubtractorMOG2. Está funcionando