使用 GSOC 进行 openCV 背景减法

openCV background subtraction with GSOC

我正在尝试实施 GSOC background subtractor from openCV.

fgbg = cv.bgsegm_BackgroundSubtractorGSOC()
fgmask = fgbg.apply(frame)

但这给了我以下错误:

fgmask = fgbg.apply(frame)
TypeError: Incorrect type of self (must be 'bgsegm_BackgroundSubtractorGSOC' or its derivative)

fgmask = cv.bgsegm_BackgroundSubtractorGSOC.apply(frame)

给我这个错误:

fgmask = cv.bgsegm_BackgroundSubtractorGSOC.apply(frame)
TypeError: descriptor 'apply' requires a 'cv2.bgsegm_BackgroundSubtractorGSOC' object but received a 'numpy.ndarray'

.apply() 的文档说我只需要提供一个输入数组(框架)、输出位置和学习率。将 .apply(frame) 更改为 .apply(frame, output, -1) 不会修复错误

如何正确实现 bgsegm_BackgroundSubtractorGSOC 对象并将其用于我的图像?

i read this post 但似乎我已经失败了

GSOC 和其他背景扣除方法(MOG2 和 KNN 除外)位于 in the extra modules 并且需要安装 opencv-contrib 库。 安装后,可以通过编写模块来使用:

backSub = cv.bgsegm.createBackgroundSubtractorGSOC()