• win10 下的opencv3.2.0实现tracker常见问题----必要条件整理


    在opencv中常常要实现对视频中的目标进行追踪,一些比较新的方法(比如MIL、KCF、TLD等)都在opencv_contrib库里,所以首先你需要下载安装opencv_contrib库,详见在win10下实现openCV3.2.0+vs2015+cmake出错解决方案 。这里需要说明的是我的系统是win10的,所以开发环境均在win10下,以下不做特殊说明均在win10下完成。
    关于tracking官网提供了其参考资料Tracking API 、Introduction to OpenCV Tracker 。
    opencv3.X以后将目标追踪方法集成到tracking上,集成图如下:

    tracking实现的思路如下:

    ●创建tracker对象 
    ●使用roiSelector函数的功能,从指定的图像中选择ROI 
    ●在图像中跟踪特定的区域

    这里我引入了一段网上的代码,也是官网的代码稍加修改:

    #include <opencv2/core/utility.hpp>
    #include <opencv2/tracking/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) {
    	// declares all required variables
    	Rect2d roi;
    	Mat frame;
    	// create a tracker object
    	Ptr<Tracker> tracker = Tracker::create("KCF");
    	// set input video
    	//  std::string video = argv[1];
    	VideoCapture cap("dount.avi");
    	// get bounding box
    	cap >> frame;
    	roi = selectROI("tracker", frame);
    	//quit if ROI was not selected
    	if (roi.width == 0 || roi.height == 0)
    		return 0;
    	// initialize the tracker
    	tracker->init(frame, roi);
    	// perform the tracking process
    	printf("Start the tracking process, press ESC to quit.
    ");
    	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
    		tracker->update(frame, roi);
    		// 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;
    	}
    	return 0;
    }
    

    运行这段代码有两个环境变量要配置:

    1.   Ptr<Tracker> tracker = Tracker::create("KCF");报错;

    原因是我们要将opencv_contrib库里的tracking引入工程中,这里有两种方法:

        a.直接将opencv_contrib库里tracking文件夹复制到opencv2下,并将tracking文件夹中的tracking文件夹中的内容复制到最外层文件夹里,

    复制后的结果:

    b.将cmake编译后的文件夹中的include目录引入工程中:VC++目录-->包含目录,添加:   D:workopencvmyopencvinstallinclude

    这样编译就没有错误了。

    由于我用的第一种方法所以遇到了一个这样的错误:

    错误  C1014:包含文件太多:深度=1024

    出现这个错误可能的原因是opencv2中有文件重复。

    2.编译链接时出现了无法编译的外部错误:

    严重性

    代码

    说明

    项目

    文件

    禁止显示状态

    错误

    LNK2019

    无法解析的外部符号 "public: bool __cdecl cv::Tracker::init(class cv::Mat const &,class cv::Rect_<double> const &)" (?init@Tracker@cv@@QEAA_NAEBVMat@2@AEBV?$Rect_@N@2@@Z),该符号在函数 main 中被引用

    point_collect

    D:workprojectpoint_collectpoint_collect质点追踪.obj

    1

     

    一共有四个这里显示了一个,原因就是没引入tracking的动态链接库,就是要将cmake后的文件夹下的动态链接库引入到工程中,

    然后配置输入文件的附加依赖项:

    这里注意如果是

    Debug:

    opencv_aruco320d.lib

    opencv_bgsegm320d.lib

    opencv_bioinspired320d.lib

    opencv_calib3d320d.lib

    opencv_ccalib320d.lib

    opencv_core320d.lib

    opencv_datasets320d.lib

    opencv_dnn320d.lib

    opencv_dpm320d.lib

    opencv_face320d.lib

    opencv_features2d320d.lib

    opencv_flann320d.lib

    opencv_fuzzy320d.lib

    opencv_highgui320d.lib

    opencv_imgcodecs320d.lib

    opencv_imgproc320d.lib

    opencv_line_descriptor320d.lib

    opencv_ml320d.lib

    opencv_objdetect320d.lib

    opencv_optflow320d.lib

    opencv_phase_unwrapping320d.lib

    opencv_photo320d.lib

    opencv_plot320d.lib

    opencv_reg320d.lib

    opencv_rgbd320d.lib

    opencv_saliency320d.lib

    opencv_shape320d.lib

    opencv_stereo320d.lib

    opencv_stitching320d.lib

    opencv_structured_light320d.lib

    opencv_superres320d.lib

    opencv_surface_matching320d.lib

    opencv_text320d.lib

    opencv_tracking320d.lib

    opencv_video320d.lib

    opencv_videoio320d.lib

    opencv_videostab320d.lib

    opencv_xfeatures2d320d.lib

    opencv_ximgproc320d.lib

    opencv_xobjdetect320d.lib

    opencv_xobjdetect320d.lib

     否则:

    1. opencv_aruco320.lib  
    2. opencv_bgsegm320.lib  
    3. opencv_bioinspired320.lib  
    4. opencv_calib3d320.lib  
    5. opencv_ccalib320.lib  
    6. opencv_core320.lib  
    7. opencv_datasets320.lib  
    8. opencv_dnn320.lib  
    9. opencv_dpm320.lib  
    10. opencv_face320.lib  
    11. opencv_features2d320.lib  
    12. opencv_flann320.lib  
    13. opencv_fuzzy320.lib  
    14. opencv_highgui320.lib  
    15. opencv_imgcodecs320.lib  
    16. opencv_imgproc320.lib  
    17. opencv_line_descriptor320.lib  
    18. opencv_ml320.lib  
    19. opencv_objdetect320.lib  
    20. opencv_optflow320.lib  
    21. opencv_phase_unwrapping320.lib  
    22. opencv_photo320.lib  
    23. opencv_plot320.lib  
    24. opencv_reg320.lib  
    25. opencv_rgbd320.lib  
    26. opencv_saliency320.lib  
    27. opencv_shape320.lib  
    28. opencv_stereo320.lib  
    29. opencv_stitching320.lib  
    30. opencv_structured_light320.lib  
    31. opencv_superres320.lib  
    32. opencv_surface_matching320.lib  
    33. opencv_text320.lib  
    34. opencv_tracking320.lib  
    35. opencv_video320.lib  
    36. opencv_videoio320.lib  
    37. opencv_videostab320.lib  
    38. opencv_xfeatures2d320.lib  
    39. opencv_ximgproc320.lib  
    40. opencv_xobjdetect320.lib  
  • 相关阅读:
    转载
    转载
    HDU
    HDU
    Hdu
    转载
    HDU
    UVa
    HDU
    POJ
  • 原文地址:https://www.cnblogs.com/linmengran/p/7487378.html
Copyright © 2020-2023  润新知