OpenCV2 Python createBackgroundSubtractor module not found

南笙酒味 提交于 2019-11-29 11:29:51

问题


I am trying to use cv2.createBackgroundSubtractorMOG2 () method in Python. I have tried both on my Mac and on my Raspberry Pi, and get the same error when running the following line of code:

fgbg = cv2.createBackgroundSubtractorMOG2()

The code I am using is taken from https://github.com/abidrahmank/OpenCV2-Python-Tutorials/blob/master/source/py_tutorials/py_video/py_bg_subtraction/py_bg_subtraction.rst

I get the following error when running this code:

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

I can't seem to use any of the createBackgroundSubtractor methods.

I have been trying to solve this for the past day, but I have had no luck searching online, as there is limited support for cv2 on Python.

Thanks in advance


回答1:


Replace the create.... with

fgbg = cv2.BackgroundSubtractorMOG()




回答2:


cv2.createbackgroundSubstractor() works in cv 3.0 for 2.4.x use cv2.BackgroundSubstractor()




回答3:


I'm using

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

and python 2.7.12. While I tried to use cv2.createBackgroundSubtractorMOG() I received the same error message (also tried without "create..."). But I was surprised when I discovered cv2.createBackgroundSubtractorKNN() with the same functionality instead ... and the test code works :) 2 days I was confused and couldn't find where the problem is.




回答4:


Thanks for the comments all. It seems that createBackgroundSubtractorMOG2() hasn't been added to OpenCV 2.4, but it is present in master branch, which can be compiled from github.

I am finding that cv2.BackgroundSubtractor() is working for what I need at the moment.

See http://code.opencv.org/issues/2812#note-5 for more details.




回答5:


I'm using OpenCV-python 2.4.9, and Python2.7.8.

In my environment, cv2.BackgroundSubtracorMOG and cv2.BackgroundSubtractorMOG2 are available.

You can find out what attributes are available by using "help(cv2)" in your python shell.

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)

Use createBackgroundSubtractorMOG2 instead of BackgroundSubtractorMOG2 It's Working




回答7:


According to https://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html You should use cv.bgsegm.createBackgroundSubtractorMOG()

I tested it on 3.4.0-dev and it worked.

Example Code:

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


来源:https://stackoverflow.com/questions/18721552/opencv2-python-createbackgroundsubtractor-module-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!