C++ 错误:无法在Qt Opencv中分配抽象类型的对象

C++ 错误:无法在Qt Opencv中分配抽象类型的对象,c++,opencv,qt-creator,background-subtraction,C++,Opencv,Qt Creator,Background Subtraction,我正在做一个简单的背景减法。这是我的密码 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/video/background_segm.hpp> using namespace cv; using namespace std; //global variables int history = 1; float varThresh

我正在做一个简单的背景减法。这是我的密码

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/background_segm.hpp>

using namespace cv;
using namespace std;

//global variables
int history = 1;
float varThreshold = 16;
bool bShadowDetection = true;

Mat src; //source image
Mat fgMaskMOG2; //fg mask generated by MOG2 method
Ptr<BackgroundSubtractor> pMOG2; //MOG2 Background subtractor

int main(int argc, char* argv[])
{
    //create GUI windows
    namedWindow("Source");
    namedWindow("FG Mask MOG 2");

    src = imread("bluePaper1.png", 1);

    //create Background Subtractor objects
    pMOG2 = new BackgroundSubtractorMOG2(history, varThreshold, bShadowDetection); //MOG2 approach
    pMOG2->setInt("nmixtures", 3);
    pMOG2->setDouble("fTau", 0.5);

    pMOG2->operator()(src, fgMaskMOG2);

    imshow("Source", src);
    imshow("FG Mask MOG 2", fgMaskMOG2);

    waitKey(0);

    return 0;
}
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
//全局变量
int历史=1;
浮动可变阈值=16;
布尔bShadowDetection=真;
Mat-src//源图像
Mat fgMaskMOG2//用MOG2方法生成fg掩模
Ptr-pMOG2//MOG2背景减法器
int main(int argc,char*argv[])
{
//创建GUI窗口
姓名(以下简称“来源”);
namedWindow(“FG掩模MOG 2”);
src=imread(“bluePaper1.png”,1);
//创建背景减法器对象
pMOG2=新的背景subtractormog2(历史、varThreshold、bShadowDetection);//MOG2方法
pMOG2->setInt(“nmixtures”,3);
pMOG2->setDouble(“fTau”,0.5);
pMOG2->operator()(src,fgMaskMOG2);
imshow(“来源”,src);
imshow(“FG掩模MOG 2”,FGMASKMOG 2);
等待键(0);
返回0;
}
但是我犯了个错误

无法分配抽象类型“cv::BackgroundSubtractorMOG2”的对象


在第
pMOG2行=新背景SubtractorMog2(历史记录、VARSThreshold、bShadowDetection)//MOG2方法

有人知道我该如何处理这个问题吗?你似乎在@berak中使用opencv2.4代码我该如何修复它