首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘'Module’对象没有属性'BackgroundSubtractorMOG‘

‘'Module’对象没有属性'BackgroundSubtractorMOG‘
EN

Stack Overflow用户
提问于 2017-04-25 20:50:34
回答 3查看 9.9K关注 0票数 2

我试图使用默认的函数来做背景减法的视频文件。

我使用Python2.7和OpenCV。

在使用“BackgroundSubtractorMOG”模块时,我会收到此错误:

代码语言:javascript
复制
'module' object has no attribute 'BackgroundSubtractorMOG'

现在,如果我尝试使用createBackgroundSubtractorMOG()模块,就会收到相同的错误。

如果我将代码更改为:

代码语言:javascript
复制
bkgnd = cv2.bgsegm.BackgroundSubtractorMOG()

稍后我会收到一个错误,试图告诉我我使用的是OpenCV 3.1 (虽然我非常肯定我没有使用)。

img_sub_gray_image = cv2.cvtColor(img_sub,cv2.COLOR_BGR2GRAY) cv2.错误: /home/odroid/opencv-3.1.0/modules/imgproc/src/color.cpp:8000:错误:函数cvtColor中的(-215) scn == 3 x\ scn == 4

下面是出错的代码段:

代码语言:javascript
复制
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)

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-25 21:30:06

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

代码语言:javascript
复制
bkgnd = cv2.bgsegm.BackgroundSubtractorMOG() 

至:

代码语言:javascript
复制
cv2.bgsegm.createBackgroundSubtractorMOG()

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

票数 3
EN

Stack Overflow用户

发布于 2017-12-01 15:05:14

这个效果很好..。

代码语言:javascript
复制
fgbg = cv2.BackgroundSubtractorMOG2()

P.S:我使用python3.5和cv2版本3.3.1

票数 0
EN

Stack Overflow用户

发布于 2020-12-15 08:39:43

如果您正在使用opencv 4,那么您应该使用带有历史、varThreshold、detectShadows参数的detectShadows参数。

代码语言:javascript
复制
cv2.createBackgroundSubtractorMOG2(history=100,varThreshold=50,detectShadows=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43620705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档