

環境  
Windows10 64bit  
VS2017  
opencv_contrib-3.4.1

[code]

    #include <opencv2/core.hpp>
    #include <opencv2/imgcodecs.hpp>
    #include <opencv2/videoio.hpp>
    #include <opencv2/highgui.hpp>
    #include <opencv2/tracking/tracker.hpp>
    #include <opencv2/tracking/tldDataset.hpp>
    #include <opencv2/imgproc.hpp>
    #include <iostream>
    
    int tracker_init(cv::Ptr<cv::TrackerMedianFlow> &tracker, cv::Rect2d &rect)
    {
        cv::VideoCapture cap(0);
        if (!cap.isOpened())
        {
            std::cout << "CAN'T OPEN CAMERA." << std::endl;
            return -1;
        }
    
        cv::Mat frame;
        cv::namedWindow("Select face");
    
        while (true)
        {
            cap >> frame;
            if (frame.empty())
            {
                std::cout << "FAILD TO READ A FRAME" << std::endl;
                cv::destroyAllWindows();
                break;
            }
    
            cv::imshow("Select face", frame);
    
            switch (cv::waitKey(1))
            {
            case 'q':
                return -1;
            case 't':
                rect = cv::selectROI("tracker", frame);
                tracker->init(frame, rect);
                cv::destroyAllWindows();
                return 1;
            default:
                break;
            }
        }
    
        return -1;
    }
    
    int main(int argc, char **argv)
    {
        cv::Ptr<cv::TrackerMedianFlow> tracker = cv::TrackerMedianFlow::create();
        cv::Rect2d roi;
    
        if (tracker_init(tracker, roi) == -1)
        {
            /*
            * 初期化に失敗
            */
            return -1;
        }
    
        cv::Scalar color = cv::Scalar(0, 255, 0);
        cv::Mat frame;
        cv::VideoCapture cap(0);
        if (!cap.isOpened())
        {
            std::cout << "CAN'T OPEN CAMERA." << std::endl;
            return -1;
        }
    
        while (cv::waitKey(1) != 'q')
        {
            cap >> frame;
            if (frame.empty())
            {
                break;
            }
    
            //更新
            tracker->update(frame, roi);
    
            //結果表示
            cv::rectangle(frame, roi, color, 1, 1);
    
            cv::imshow("tracker", frame);
        }
    
        return 0;
    }
    
[/code]

をVS2017でビルドしようとしたところ以下のエラーが出ました。

[code]

    1>------ ビルド開始: プロジェクト:追尾システム, 構成:Release x64 ------
    1>  Source.cpp
    1>Source.cpp(39): error C2039: 'selectROI': 'cv' のメンバーではありません。
    1>  C:\opencv_contrib-3.4.1\modules\tracking\include\opencv2/tracking/tldDataset.hpp(47): note: 'cv' の宣言を確認してください
    1>Source.cpp(39): error C3861: 'selectROI': 識別子が見つかりませんでした
    ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
    
[/code]

どうにか解決法を見つけているのですが困っています。


CC BY-SA 3.0
2018-04-19T13:53:13.387
43391
2018-04-19T13:53:13.387
27296
question
c++ c opencv
追尾するためのプログラムのエラーが解決できません。