1. 程式人生 > >win10 下的opencv3.2.0實現tracker常見問題----必要條件整理

win10 下的opencv3.2.0實現tracker常見問題----必要條件整理

mage namespace bound ring 3.x inpu blog 安裝 creat

在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.\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
		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:\work\opencv\myopencv\install\include

技術分享

這樣編譯就沒有錯誤了。

由於我用的第一種方法所以遇到了一個這樣的錯誤:

錯誤 C1014:包含文件太多:深度=1024

出現這個錯誤可能的原因是opencv2中有文件重復。

2.編譯鏈接時出現了無法編譯的外部錯誤:

嚴重性

代碼

說明

項目

文件

禁止顯示狀態

錯誤

LNK2019

無法解析的外部符號 "public: bool __cdecl cv::Tracker::init(class cv::Mat const &,class cv::Rect_<double> const &)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z),該符號在函數 main 中被引用

point_collect

D:\work\project\point_collect\point_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

win10 下的opencv3.2.0實現tracker常見問題----必要條件整理