OpenCV: не удается найти модули в репозитории contrib (Tracker, selectROI)

Я работаю над проектом, в котором задействованы объекты отслеживания, и я пытаюсь заставить работать TrackerKCF репозитория OpenCV. Это пример кода, который я получил в Интернете:

#include <opencv2/core/utility.hpp>
#include <opencv2/video/tracking.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <cstring>

using namespace std;
using namespace cv;

int main( int argc, char** argv ){
  // show help
  if(argc<2){
    cout<<
      " Usage: example_tracking_kcf <video_name>\n"
      " examples:\n"
      " example_tracking_kcf Bolt/img/%04.jpg\n"
      " example_tracking_kcf faceocc2.webm\n"
      << endl;
    return 0;
  }

  // create the tracker
  Ptr<Tracker> tracker = TrackerKCF::create();

  // set input video
  std::string video = argv[1];
  VideoCapture cap(video);

  Mat frame;

  // get bounding box
  cap >> frame;
  Rect2d roi= selectROI("tracker", frame, true, false);

  //quit if ROI was not selected
  if(roi.width==0 || roi.height==0)
    return 0;

  // initialize the tracker
  tracker->init(frame,roi);

  // do the tracking
  printf("Start the tracking process, press ESC to quit.\n");
  for ( ;; ){
    // get frame from the video
    cap >> frame;

    // stop the program if no more images
    if(frame.rows==0 || frame.cols==0)
      break;

    // update the tracking result
    bool isfound = tracker->update(frame,roi);
    if(!isfound)
    {
        cout << "The target has been lost...\n";
        waitKey(0);
        return 0;
    }

    // draw the tracked object
    rectangle( frame, roi, Scalar( 255, 0, 0 ), 2, 1 );

    // show image with the tracked object
    imshow("tracker",frame);

    //quit on ESC button
    if(waitKey(1)==27)break;
  }
}

Однако я получил следующую ошибку:

tracktest.cpp: In function ‘int main(int, char**)’:
tracktest.cpp:33:7: error: ‘Tracker’ was not declared in this scope
   Ptr<Tracker> tracker = TrackerKCF::create();
       ^
tracktest.cpp:33:14: error: template argument 1 is invalid
   Ptr<Tracker> tracker = TrackerKCF::create();
              ^
tracktest.cpp:33:26: error: ‘TrackerKCF’ has not been declared
   Ptr<Tracker> tracker = TrackerKCF::create();
                          ^
tracktest.cpp:43:54: error: ‘selectROI’ was not declared in this scope
   Rect2d roi= selectROI("tracker", frame, true, false);
                                                      ^
tracktest.cpp:50:10: error: base operand of ‘->’ is not a pointer
   tracker->init(frame,roi);
          ^
tracktest.cpp:63:27: error: base operand of ‘->’ is not a pointer
     bool isfound = tracker->update(frame,roi);
                           ^
./tracktest.sh: line 5: ./tracktest: No such file or directory

Я попытался переустановить OpenCV 3.1.0 и соответствующий репозиторий contrib, и мне показалось, что это make завершилось нормально. Я также попытался найти, где tracker.cpp находится в моем исходном каталоге OpenCV, но ничего не появилось.

Я предполагаю, что это потому, что я неправильно установил модули contrib, но я не уверен. Кто-нибудь может понять, что не так? Заранее спасибо.


person zeklewa    schedule 20.06.2017    source источник
comment
Я предполагаю, что заголовочный файл трекера <opencv2/tracking.hpp>. Включите этот файл и посмотрите, работает ли он.   -  person sgarizvi    schedule 20.06.2017
comment
tracking.hpp нет :( tracktest.cpp:16:32: fatal error: opencv2/tracking.hpp: No such file or directory compilation terminated. ./tracktest.sh: line 5: ./tracktest: No such file or directory   -  person zeklewa    schedule 20.06.2017
comment
также я думал, что это уже включено в #include <opencv2/video/tracking.hpp>   -  person zeklewa    schedule 20.06.2017


Ответы (1)


По своей необъяснимой глупости я забыл запустить make install. Теперь все хорошо!

person zeklewa    schedule 20.06.2017
comment
Я все еще получаю сообщение об ошибке: : error: ‘selectROI’ не был объявлен в этой области - person sqp_125; 11.10.2017
comment
Есть ли способ проверить, установлен ли у меня opencv_contrib? - person sqp_125; 11.10.2017
comment
sudo apt-get install libopencv-contrib-dev скоро вам расскажет. У меня такая же проблема кстати. - person user2023370; 08.03.2020