python - “模块”对象没有属性 'BackgroundSubtractorMOG'

标签 python opencv background-subtraction

我正在尝试使用默认函数对视频文件进行背景扣除。
我正在使用 Python 2.7 和 OpenCV。
我在使用“BackgroundSubtractorMOG”模块时收到此错误:

'module' object has no attribute 'BackgroundSubtractorMOG'

现在,如果我尝试使用 createBackgroundSubtractorMOG() 模块,我会收到相同的错误。
如果我将代码更改为:

bkgnd = cv2.bgsegm.BackgroundSubtractorMOG()

稍后我收到一个错误,试图告诉我我正在使用 OpenCV 3.1(尽管我相当确定我没有)。

 img_sub_gray_image = cv2.cvtColor(img_sub, cv2.COLOR_BGR2GRAY) cv2.error:

/home/odroid/opencv-3.1.0/modules/imgproc/src/color.cpp:8000: error: (-215) scn == 3 || scn == 4 in function cvtColor

这是出错的代码段:

bkgnd = cv2.bgsegm.BackgroundSubtractorMOG() 
cap = cv2.VideoCapture('video.mp4')

while(True): 
    ret, frame = cap.read()

    #background subtraction
    img_sub = bkgnd.apply(frame)

    #convert to grayscale
    img_sub_gray_image = cv2.cvtColor(img_sub, cv2.COLOR_BGR2GRAY)
    #thresholding, forcing to binary image
    ret,threshold1 = cv2.threshold(img_sub_gray_image, LOWER_BOUND, UPPER_BOUND, cv2.THRESH_BINARY)

有什么想法吗?

最佳答案

在 opencv 3 中,他们更改了一些函数名称,您必须更改:

bkgnd = cv2.bgsegm.BackgroundSubtractorMOG() 

至:

cv2.bgsegm.createBackgroundSubtractorMOG()

另一个观察结果是,apply 函数的结果是二进制图像,因此没有必要进行从 RGBgray 的转换。您不需要使用命令:cv2.cvtColor(img_sub, cv2.COLOR_BGR2GRAY)

关于python - “模块”对象没有属性 'BackgroundSubtractorMOG',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43620705/

相关文章:

c++ - OpenCV:错误:不匹配调用 '(cv::Mat) (int&, int&)'

opencv - 在图像中搜索已知标识

opencv - 密码本背景减法-一切都爆炸成白色

python - 背景减法器

c++ - OpenCV手部识别?

python - 尝试制作黑色图像,但 np.uint8 出现错误

python - 如何设置正确的权限来使用Python Azure SDK for Graph?

python - 使用 Python 获取、渲染和定位 PDF 文件中的图像

Python NLTK 可视化

python - 如何解决循环导入错误?