抽象 class 类型 "cv::BackgroundSubtractorMOG2" 的对象是不允许的。所有的方法都是纯虚拟的
Object of abstract class type "cv::BackgroundSubtractorMOG2" is not allowed. all the methods are pure virtual
我在Windows7 64bit 中用VS2015 + OpenCV3.0开发代码。这是我想试一试的演示代码。我试过很多演示,但遇到了同样的问题:
object of abstract class type "cv::BackgroundSubtractorMOG2" is not allowed. all the methods are pure virtual function.
演示代码为:
using namespace cv;
using namespace std;
int main() {
VideoCapture video("1.avi");
Mat frame, mask, thresholdImage, output;
//video>>frame;
Ptr<BackgroundSubtractor> pMOG2;
pMOG2 = new BackgroundSubtractorMOG2();
BackgroundSubtractorMOG2 bgSubtractor(20, 16, true);
while (true) {
video >> frame;
++frameNum;
bgSubtractor(frame, mask, 0.001);
cout << frameNum << endl;
//imshow("mask",mask);
//waitKey(10);
}
return 0;
}
我包含了很多 heaerd 文件,但我仍然无法使用 class BackgroundSubtractorMOG2
,更糟糕的是,BackgroundSubtractorMOG
的 class 显示为未声明。
语法已从 OpenCV 2 更改。9.X。这将在 OpenCV 3.0.0 中工作:
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main() {
VideoCapture video("1.avi");
Mat frame, mask, thresholdImage, output;
int frameNum = 0;
Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2(20, 16, true);
while (true) {
video >> frame;
++frameNum;
pMOG2->apply(frame, mask, 0.001);
cout << frameNum << endl;
imshow("mask",mask);
waitKey(10);
}
return 0;
}
我在Windows7 64bit 中用VS2015 + OpenCV3.0开发代码。这是我想试一试的演示代码。我试过很多演示,但遇到了同样的问题:
object of abstract class type "cv::BackgroundSubtractorMOG2" is not allowed. all the methods are pure virtual function.
演示代码为:
using namespace cv;
using namespace std;
int main() {
VideoCapture video("1.avi");
Mat frame, mask, thresholdImage, output;
//video>>frame;
Ptr<BackgroundSubtractor> pMOG2;
pMOG2 = new BackgroundSubtractorMOG2();
BackgroundSubtractorMOG2 bgSubtractor(20, 16, true);
while (true) {
video >> frame;
++frameNum;
bgSubtractor(frame, mask, 0.001);
cout << frameNum << endl;
//imshow("mask",mask);
//waitKey(10);
}
return 0;
}
我包含了很多 heaerd 文件,但我仍然无法使用 class BackgroundSubtractorMOG2
,更糟糕的是,BackgroundSubtractorMOG
的 class 显示为未声明。
语法已从 OpenCV 2 更改。9.X。这将在 OpenCV 3.0.0 中工作:
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main() {
VideoCapture video("1.avi");
Mat frame, mask, thresholdImage, output;
int frameNum = 0;
Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2(20, 16, true);
while (true) {
video >> frame;
++frameNum;
pMOG2->apply(frame, mask, 0.001);
cout << frameNum << endl;
imshow("mask",mask);
waitKey(10);
}
return 0;
}