【问题标题】:OpenCV2 Python createBackgroundSubtractor module not found未找到 OpenCV2 Python createBackgroundSubtractor 模块
【发布时间】:2013-09-10 14:25:17
【问题描述】:

我正在尝试在 Python 中使用 cv2.createBackgroundSubtractorMOG2 () 方法。我在 Mac 和 Raspberry Pi 上都试过了,运行以下代码行时出现相同的错误:

fgbg = cv2.createBackgroundSubtractorMOG2()

我使用的代码取自https://github.com/abidrahmank/OpenCV2-Python-Tutorials/blob/master/source/py_tutorials/py_video/py_bg_subtraction/py_bg_subtraction.rst

运行此代码时出现以下错误:

fgbg = cv2.createBackgroundSubtractorMOG2() AttributeError:“模块”对象没有属性“createBackgroundSubtractorMOG2”

我似乎无法使用任何 createBackgroundSubtractor 方法。

过去一天我一直在尝试解决这个问题,但我在网上搜索时没有运气,因为 Python 上对 cv2 的支持有限。

提前致谢

【问题讨论】:

  • 您使用的是哪个版本的 OpenCV 绑定?
  • 我使用的是 OpenCV 2.4.6,它看起来像 Python 2.7.5 的最新 OpenCV 版本
  • 这很奇怪,因为它应该在上一个版本中添加(我还没有检查过)。但是您仍然可以使用cv2.BackgroundSubtractorMOG() 而不是cv2.createBackgroundSubtractorMOG2()
  • 非常感谢,这是有道理的,cv2.BackgroundSubtractorMOG() 正在工作。你知道什么时候会解决这个问题吗?

标签: python opencv background-subtraction


【解决方案1】:

将 create.... 替换为

fgbg = cv2.BackgroundSubtractorMOG()

【讨论】:

    【解决方案2】:

    cv2.createbackgroundSubstractor() 适用于 cv 3.0 for 2.4.x 使用 cv2.BackgroundSubstractor()

    【讨论】:

    • IMO 这不是答案,而是评论。
    • * cv2.BackgroundSubtractor()
    【解决方案3】:

    我正在使用

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

    和 python 2.7.12。当我尝试使用 cv2.createBackgroundSubtractorMOG() 时,我收到了相同的错误消息(也尝试不使用“create ...”)。但是当我发现 cv2.createBackgroundSubtractorKNN() 具有相同的功能时,我感到很惊讶......并且测试代码有效:) 2天我很困惑,找不到问题所在。

    【讨论】:

      【解决方案4】:

      感谢大家的cmets。似乎 createBackgroundSubtractorMOG2() 尚未添加到 OpenCV 2.4,但它存在于 master 分支中,可以从 github 编译。

      我发现 cv2.BackgroundSubtractor() 正在满足我目前的需要。

      更多详情请见http://code.opencv.org/issues/2812#note-5

      【讨论】:

        【解决方案5】:

        我正在使用 OpenCV-python 2.4.9 和 Python2.7.8。

        在我的环境中,cv2.BackgroundSubtractorMOG 和 cv2.BackgroundSubtractorMOG2 可用。

        您可以通过在您的 python shell 中使用“help(cv2)”来找出可用的属性。

        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)
          

          使用 createBackgroundSubtractorMOG2 代替 BackgroundSubtractorMOG2 它正在工作

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 2021-08-19
              • 1970-01-01
              • 2017-09-19
              • 2021-04-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多