У меня такая же проблема как эта тема BackgroundSubtractorMOG2 & OpenCV
Прежде чем я использую opencv 2.4.9, я удалил opencv 3.0.0. И теперь, когда я использую класс BackgroundSubtractorMOG2, тогда у меня есть эта проблема.
Как я могу решить это. Я использую затмение. Пожалуйста, помогите мне.
Мой исходный код:
int main(int argc, char *argv[]) {
cv::Mat frame;
cv::Mat back;
cv::Mat fore;
cv::VideoCapture cap(0);
cv::BackgroundSubtractorMOG2 bg;
bg.set("nmixtures", 3);
//bg.bShadowDetection = false;
std::vector<std::vector<cv::Point> > contours;
cv::namedWindow("Frame");
cv::namedWindow("Background");
for (;;) {
cap >> frame;
bg.operator()(frame, fore);
bg.getBackgroundImage(back);
cv::erode(fore, fore, cv::Mat());
cv::dilate(fore, fore, cv::Mat());
cv::findContours(fore, contours, CV_RETR_EXTERNAL,
CV_CHAIN_APPROX_NONE);
cv::drawContours(frame, contours, -1, cv::Scalar(0, 0, 255), 2);
cv::imshow("Frame", frame);
cv::imshow("Background", back);
if (cv::waitKey(30) >= 0)
break;
}
return 0;}
const int nmixtures =3;
const bool bShadowDetection = false;
cv::BackgroundSubtractorMOG2 bg(nmixtures,bShadowDetection);
Измените код, как это. Это будет работать .