Python-OpenCV AttributeError: 'module'对象没有属性'createBackgroundSubtractorGMG'。

9

我正在尝试遵循以下教程: https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_video/py_bg_subtraction/py_bg_subtraction.html

在尝试第三个示例(BackgroundSubtractorGMG)时,我遇到了这个错误:

AttributeError: 'module' object has no attribute 'createBackgroundSubtractorGMG'

我之前也遇到了相同的错误。但是我按照这篇文章中的解释进行了操作,不过在这里却没有奏效。

如果有人已经成功解决了这个问题,请帮帮我。

我使用的是Python 2.7.3和OpenCV 2.4.6.1,在Ubuntu 12.04上运行。


1
那个教程是针对OpenCV 3.x的。因此,请从github主分支编译opencv。 - Abid Rahman K
谢谢提供的信息,我现在会使用Open CV3! - okkhoy
4个回答

12
在OpenCV 3.0.0-dev中,您需要使用contrib存储库进行编译,然后在bgsegm子模块中使用。即只需调用cv2.bgsegm.createBackgroundSubtractorGMG()。

1
“Pokerfaced”他们在哪里提到了?我在文档中没有看到,是我错过了什么吗?太好了,又要重新编译20分钟。 - Błażej Michalik
1
我遇到了3.3 AttributeError: 'module' object has no attribute 'bgsegm'的错误。 - maxisme
2
@Maximilian 你确定你的版本是使用opencv_contrib编译的吗? - Sven Zwei
不行!这就是为什么!谢谢。 - maxisme
这对我有用。使用3.3.1 dev python-opencv。 - Tarun

9
cv2.bgsegm.createBackgroundSubtractorGMG()
cv2.createBackgroundSubtractorMOG2()
cv2.bgsegm.createBackgroundSubtractorMOG(),

这对我有用


7

哦,亲爱的,这又是一个那种故事...

在2.4.6中,您只能使用Python中的BackgroundSubtractorMOG。(句号)

截至2.4.8,似乎已经解决了BackgroundSubtractorMOG2问题,但BackgroundSubtractorGMG仍然缺失。

无论使用哪个版本,您都需要使用纯构造函数创建一个。

在3.0(master)中,他们改变了语法,现在您必须调用'createBackgroundSubtractorGMG'、'createBackgroundSubtractorMOG2'等等(这可能是您的教程所指的)。但现在您至少可以使用所有三个版本。

因此,无论如何,如果您想使用BackgroundSubtractorMOG2,您将不得不更新到2.4.8;如果您需要BackgroundSubtractorGMG,则需要3.0(在某种程度上是“激进的”,但新接口对所需参数有更好的控制,我认为)。


感谢您的澄清! - okkhoy
实际上,我的3.0.0-dev版本(今天的git主分支)确实包含createBackgroundSubtractorMOGcreateBackgroundSubtractorMOG2,但是没有createBackgroundSubtractorGMG(在Python3中)。仍在寻找那个。 - Claude
以防有人在寻找这个:我深入研究了为什么createBackgroundSubtractorGMG消失了,并在此发布了一个新问题:https://dev59.com/X4nca4cB1Zd3GeqP9ln- - Claude

2

bgsegm最初在opencv的contrib模块中,但更新后我不确定。

但是,如果您没有构建contrib模块:

pip install opencv-contrib-python

确保在执行安装过程时没有导入cv2的控制台正在运行。 以管理员身份运行cmd 对我有用。 最初的回答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接