【问题标题】:BackgroundSubtractorMOG2 & OpenCV背景减法器MOG2 & OpenCV
【发布时间】:2013-04-07 19:28:27
【问题描述】:

我正在尝试编译http://mateuszstankiewicz.eu/?p=189 的简单示例 我正在运行 Ubuntu 12.10 64 位。我使用 OpenCV 2.4.4a

我使用执行此操作的 makefile 进行编译:

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

成功编译这个程序我缺少什么?谢谢:)

【问题讨论】:

    标签: opencv background-subtraction


    【解决方案1】:

    你还需要链接opencv_video

    【讨论】:

    • 问题解决了,我刚刚在makefile中添加了“-lopencv_video” :)
    【解决方案2】:

    添加这些代码行。然后它会工作。/

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

    【讨论】:

      【解决方案3】:

      如果您使用的是 Microsoft Visual,只需在

      中添加“opencv_video244.lib”

      属性->链接器->输入->附加依赖

      【讨论】:

      • 这如何比以前看到的更有用?与此处看到的其他答案相比,这几乎是逐字记录。
      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 2016-06-19
      相关资源
      最近更新 更多