OpenCV2 Python createBackgroundSubtractor module not found

瘦欲@ 提交于 2019-11-30 08:33:53

Replace the create.... with

fgbg = cv2.BackgroundSubtractorMOG()

fury

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

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.

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.

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

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