以前写了一片博文,最近有人给我反应,在opencv中出现BackgroundSubtractorMOG未定义问题,我这里简单说明一下这个问题。
通过对opencv文档查询可以发现如下:
这里我们可以清楚看到BackgroundSubtractorMOG所在的命名空间中,由于我这篇博文使用的是BackgroundSubtractorMOG2,而BackgroundSubtractorMOG2就在cv命名空间中,所以可以正常使用。对于使用BackgroundSubtractorMOG,这个函数在cv::bgsegm中,如果你没有正确导入头文件,就会出现未定义问题。
如果你想正确使用BackgroundSubtractorMOG这个函数,你应该在头文件中引入
#include "bgsegm.hpp"
这个头文件。但是如果你导入上面的头文件时,你还会发现仍然不能使用,原因在于以下
opencv_contrib这是opencv一个额外的部分,这部分是收费或者不稳定的算法,如果你想使用可以自己单独编译opencv,编译过程网上有很多教程,这里就不在赘述。我相信大家参考教程是可以编译成功的。
如果你变异opencv成功,下面的具体使用和BackgroundSubtractorMOG2基本相同,如下:
Ptr<cv::bgsegm::BackgroundSubtractorMOG> fgbg