web-dev-qa-db-ja.com

OpenCV2 Python createBackgroundSubtractorモジュールが見つかりません

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: 'module' object has no attribute 'createBackgroundSubtractorMOG2'

CreateBackgroundSubtractorメソッドを使用できないようです。

私は過去1日間、これを解決しようとしましたが、Pythonでのcv2のサポートは限られているため、オンラインで検索することができませんでした。

前もって感謝します

17
user2765323

Create ....を

fgbg = cv2.BackgroundSubtractorMOG()

32
user2897775

cv2.createbackgroundSubstractor()はcv 3.0 for 2.4.xで機能しますcv2.BackgroundSubstractor()を使用します

12
fury

私は使っています

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

およびpython 2.7.12。cv2.createBackgroundSubtractorMOG()を使用しようとしたときに、同じエラーメッセージが表示されました( "create ..."も使用せずに試行されました)。代わりに同じ機能を備えたcv2.createBackgroundSubtractorKNN()...そしてテストコードは機能します:) 2日間私は混乱し、問題のある場所を見つけることができませんでした。

5
Ievgen S.

コメントありがとうございます。 createBackgroundSubtractorMOG2()はOpenCV 2.4に追加されていないようですが、githubからコンパイルできるmasterブランチに存在しています。

Cv2.BackgroundSubtractor()が現在必要なものに対して機能していることがわかりました。

詳細は http://code.opencv.org/issues/2812#note-5 を参照してください。

4
user2765323

私はOpenCV-python 2.4.9とPython2.7.8を使用しています。

私の環境では、cv2.BackgroundSubtracorMOGおよびcv2.BackgroundSubtractorMOG2が使用可能です。

pythonシェルで「help(cv2)」を使用すると、どの属性を使用できるかを確認できます。

BackgroundSubtractorMOG(...)
    BackgroundSubtractorMOG([history, nmixtures, backgroundRatio[, noiseSigma]]) -> <BackgroundSubtractorMOG object>

BackgroundSubtractorMOG2(...)
    BackgroundSubtractorMOG2([history, varThreshold[, bShadowDetection]]) -> <BackgroundSubtractorMOG2 object>
2
wata
>>> 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)

BackgroundSubtractorMOG2の代わりにcreateBackgroundSubtractorMOG2を使用する

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()
1
Qin Heyang