我正在尝试在Python中使用cv2.createBackgroundSubtractorMOG2()方法。我在我的Mac和我的Raspberry Pi上都试过了,并且在运行以下代码行时遇到同样的错误:
fgbg = cv2.createBackgroundSubtractorMOG2()
运行此代码时出现以下错误:
fgbg = cv2.createBackgroundSubtractorMOG2() AttributeError:'module'对象没有属性'createBackgroundSubtractorMOG2'
我似乎无法使用任何createBackgroundSubtractor方法。
过去一天我一直试图解决这个问题,但我没有在线搜索,因为在Python上对cv2的支持有限。
提前致谢
答案 0 :(得分:31)
用
替换create ....fgbg = cv2.BackgroundSubtractorMOG()
答案 1 :(得分:12)
cv2.createbackgroundSubstractor()
适用于cv 3.0 for 2.4.x使用cv2.BackgroundSubstractor()
答案 2 :(得分:5)
我正在使用
Person p1 = new Person();
p1.Contacts.Add(new Phone() { Number = "555579561" });
和python 2.7.12。当我尝试使用cv2.createBackgroundSubtractorMOG()时,我收到了相同的错误消息(也尝试过没有"创建...")。但是当我发现具有相同功能的cv2.createBackgroundSubtractorKNN()时,我感到很惊讶......并且测试代码可以工作:) 2天我很困惑,无法找到问题所在。
答案 3 :(得分:4)
感谢所有评论。似乎createBackgroundSubtractorMOG2()尚未添加到OpenCV 2.4中,但它存在于master分支中,可以从github编译。
我发现cv2.BackgroundSubtractor()正在为我目前需要的工作。
有关详细信息,请参阅http://code.opencv.org/issues/2812#note-5。
答案 4 :(得分:2)
我使用的是OpenCV-python 2.4.9和Python2.7.8。
在我的环境中,cv2.BackgroundSubtracorMOG和cv2.BackgroundSubtractorMOG2可用。
您可以使用" help(cv2)"找出可用的属性。在你的python shell中。
BackgroundSubtractorMOG(...)
BackgroundSubtractorMOG([history, nmixtures, backgroundRatio[, noiseSigma]]) -> <BackgroundSubtractorMOG object>
BackgroundSubtractorMOG2(...)
BackgroundSubtractorMOG2([history, varThreshold[, bShadowDetection]]) -> <BackgroundSubtractorMOG2 object>
答案 5 :(得分:1)
>>> 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 它在工作
答案 6 :(得分:1)
根据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()