我试图使用默认的函数来做背景减法的视频文件。
我使用Python2.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.错误: /home/odroid/opencv-3.1.0/modules/imgproc/src/color.cpp:8000:错误:函数cvtColor中的(-215) scn == 3 x\ scn == 4
下面是出错的代码段:
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)有什么想法吗?
发布于 2017-04-25 21:30:06
在opencv 3中,它们更改了函数的一些名称,您必须更改:
bkgnd = cv2.bgsegm.BackgroundSubtractorMOG() 至:
cv2.bgsegm.createBackgroundSubtractorMOG()另一个观察是,应用函数的结果是二进制映像,因此不需要执行从RGB到gray的转换。您不需要使用命令:cv2.cvtColor(img_sub, cv2.COLOR_BGR2GRAY)
发布于 2017-12-01 15:05:14
这个效果很好..。
fgbg = cv2.BackgroundSubtractorMOG2()P.S:我使用python3.5和cv2版本3.3.1
发布于 2020-12-15 08:39:43
如果您正在使用opencv 4,那么您应该使用带有历史、varThreshold、detectShadows参数的detectShadows参数。
cv2.createBackgroundSubtractorMOG2(history=100,varThreshold=50,detectShadows=True)https://stackoverflow.com/questions/43620705
复制相似问题