«BackgroundSubtractorMOG» не является членом «cv»

Я работаю в Motion Detector Script, но когда я запускаю свой код, я получаю эту ошибку каждый раз, когда использую эту функцию, но я не знаю, почему это неправильно.

я использую opencv3ниже мой код Я пытался запустить другие примеры, я получаю его из Интернета для той же функции, но ошибка все еще там. Есть идеи, чтобы это исправить?

Это ошибка:

cv.cpp: в функции int main ():

cv.cpp: 23: 4: ошибка: «BackgroundSubtractorMOG» не является членом «cv»

Мой код:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <vector>
#include <iostream>
#include <sstream>
#include <opencv2/video/background_segm.hpp>
using namespace std;int main()
{
//Openthevideofile
cv::VideoCapture capture("/home/shar/Desktop/op.mp4");
//checkifvideosuccessfullyopened
if (!capture.isOpened())
return 0;
//currentvideoframe
cv::Mat frame;
//foregroundbinaryimage
cv::Mat foreground;
cv::namedWindow("ExtractedForeground");
//TheMixtureofGaussianobject
//used with all default parameters
cv::BackgroundSubtractorMOG mog;

bool stop(false);
//forallframesinvideo
while(!stop){
//readnextframeifany
if(!capture.read(frame))
break;
//updatethebackground
//andreturntheforeground
mog(frame,foreground,0.01)
//learningrate
//Complementtheimage
cv::threshold(foreground,foreground,128,255,cv::THRESH_BINARY_INV);
//showforeground
cv::imshow("ExtractedForeground",foreground);
//introduceadelay
//orpresskeytostop
if(cv::waitKey(10)>=0)
stop=true;
}}

0

Решение

Как сказал @shar, ответ в эта почта. Чтобы создать умный указатель на алгоритм, вам нужно сделать:

  cv::Ptr<cv::BackgroundSubtractorMOG2> pMOG2 = cv::createBackgroundSubtractorMOG2();

РЕДАКТИРОВАТЬ:

И для использования алгоритма:

 float learningRate = 0.01; // or whatever
cv::Mat foreground;
pMOG2->apply(frame, foreground, learningRate);
1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector