2013-04-07 57 views
5

我试图编译我运行Ubuntu 12.10 64个bits.I使用OpenCV的2.4.4aBackgroundSubtractorMOG2及OpenCV的

我编译使用一个makefile,这是否在http://mateuszstankiewicz.eu/?p=189 简单的例子:

g++ background_subtraction.cpp -o background_subtraction -I/usr/local/include/opencv -I/usr/local/include/opencv2 -L /usr/local/lib -lm -lopencv_core -lopencv_highgui -lopencv_imgproc -lcvblob 

的错误:

/tmp/cc0ZWnll.o: dans la fonction « main »: 
background_subtraction.cpp:(.text+0x96): référence indéfinie vers « cv::BackgroundSubtractorMOG2::BackgroundSubtractorMOG2() » 
background_subtraction.cpp:(.text+0x1f0): référence indéfinie vers « cv::BackgroundSubtractorMOG2::operator()(cv::_InputArray const&, cv::_OutputArray const&, double) » 
background_subtraction.cpp:(.text+0x222): référence indéfinie vers « cv::BackgroundSubtractorMOG2::getBackgroundImage(cv::_OutputArray const&) const » 
background_subtraction.cpp:(.text+0x61a): référence indéfinie vers « cv::BackgroundSubtractorMOG2::~BackgroundSubtractorMOG2() » 
background_subtraction.cpp:(.text+0x7a6): référence indéfinie vers « cv::BackgroundSubtractorMOG2::~BackgroundSubtractorMOG2() » 
collect2: erreur: ld a retourné 1 code d'état d'exécution 

方式:未定义的参考...

的background_subtraction.cpp文件:

#include <opencv2/opencv.hpp> 

#include <iostream> 
#include <vector> 

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; 
} 

我缺少的是对成功地编译这个程序?谢谢:)

回答

9

你还需要,如果您使用Microsoft Visual只是加上 “opencv_video244.lib” 链接opencv_video

+2

问题解决了,我只是说“-lopencv_video”的makefile文件:) – 2013-04-07 19:59:43

-2

属性 - >接头 - >输入 - >附加依赖

+0

这怎么添加任何比以前看到了更多的用处?与其他答案相比,这几乎是逐字的。 – rayryeng 2016-02-18 20:07:31

0

添加这些代码行。然后它会work./

int const mixture = 2; 
    const bool bShadowDetection = false; 
    cv::BackgroundSubtractorMOG2 bg(mixture, bShadowDetection);