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のサポートは限られているため、オンラインで検索することができませんでした。
前もって感謝します
Create ....を
fgbg = cv2.BackgroundSubtractorMOG()
cv2.createbackgroundSubstractor()
はcv 3.0 for 2.4.xで機能しますcv2.BackgroundSubstractor()
を使用します
私は使っています
>>> import cv2
>>> cv2.__version__
>>> 3.2.0
およびpython 2.7.12。cv2.createBackgroundSubtractorMOG()を使用しようとしたときに、同じエラーメッセージが表示されました( "create ..."も使用せずに試行されました)。代わりに同じ機能を備えたcv2.createBackgroundSubtractorKNN()...そしてテストコードは機能します:) 2日間私は混乱し、問題のある場所を見つけることができませんでした。
コメントありがとうございます。 createBackgroundSubtractorMOG2()はOpenCV 2.4に追加されていないようですが、githubからコンパイルできるmasterブランチに存在しています。
Cv2.BackgroundSubtractor()が現在必要なものに対して機能していることがわかりました。
詳細は http://code.opencv.org/issues/2812#note-5 を参照してください。
私は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>
>>> 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()