opencv3.2 + opencv contrib3.2 + vs2015 + win764bit 配置KCF跟蹤算法

一.準備工具

1.分別下載opencv3.2,opencv-contrib,cmake。(博主用的cmake是3.11.1。)

2.解壓opencv_contrib-3.2.0.zip  將解壓出來的結果放在 opencv/sources/下

build和sources是安裝opencv自動產生的文件夾,cmake_build下面會介紹,用於產生cmake出來的結果

將opencv_contrib-3.2.0文件夾放在opencv/sources下。這裏多說一句,爲什麼要放在這個文件夾下面,起始就是因爲cmake要編譯的文件源碼就是在sources下,將contrib放在這裏可以自動的進行編譯。

3.創建一個名爲cmake_build的文件,用來放置cmake輸出的工程。

二.CMAKE編譯過程

選擇好1和2的路徑,點擊3configure,根據自己的平臺選擇合適的環境

Notice:此處Configure中需要聯網下載ippicv與ffmepg。若沒有出現Configure done,請再次嘗試點擊Configure。

配置完成後找到OPENCV_EXTRA_MODULES_PATH這一項,把自己對應的目錄填進去,本人是:
D:\software\opencv320\sources\opencv_contrib-3.2.0\modules,然後點擊configure ,成功之後點擊generate:

如果一切順利,會提示configure done  和 generating done。cmake過程結束

三.在vs2015上的設置與再生成

上述步驟成功後,回到我們設置的存放build文件的目錄,D:\software\opencv320\cmake_build,找到如下文件打開:

 

 

3.1.打開工程--->右鍵--->重新生成解決方案。注意你選擇的是debug還是release,這就是debug版與release版的區別。bebug版有檢測數據是否溢出的功能,release相對反應速度快。

3.2.重新生成,生成的效果如下,如果有失敗,原因是GITHUB上的opencv_contrib版本高,所以請更新你的opencv。
Dubug版本下,

3.3 生成INSTALL

此時,編譯過程完畢,輸出:

dll文件存放目錄:D:\software\opencv320\cmake_build\bin\Debug
lib文件存放目錄:D:\software\opencv320\cmake_build\lib\Debug

注意這兩個路徑,一會需要用到這裏的dll和lib

四.配置環境變量

dll文件存放目錄加入環境變量 D:\software\opencv320\cmake_build\bin\Debug

五.工程配置

1 VC++目錄 -- 包含目錄 --

D:\software\opencv320\build\include\opencv2
D:\software\opencv320\build\include\opencv
D:\software\opencv320\build\include
D:\software\opencv320\cmake_build\install\include


2 VC++目錄 -- 包含庫 --
D:\software\opencv320\build\x64\vc14\lib
D:\software\opencv320\cmake_build\install\x64\vc14\lib

3 鏈接器 -- 輸入 -- 附加依賴項

opencv_world320d.lib


opencv_aruco320d.lib 
opencv_bgsegm320d.lib  
opencv_bioinspired320d.lib 
opencv_calib3d320d.lib 
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_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_xphoto320d.lib

六.KCF測試

#include <opencv2/core/utility.hpp>
#include <opencv2/tracking/tracking.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <opencv.hpp>
#include <iostream>
#include <cstring>
#include <Windows.h >

#pragma comment( lib,"winmm.lib" )

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("E:\\xxx.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");


	DWORD t1, t2;
	
	for (;; ) 
	{
		// get frame from the video
		cap >> frame;
		// stop the program if no more images
		if (frame.rows == 0 || frame.cols == 0)
			break;

		t1 = timeGetTime();


		// update the tracking result
		tracker->update(frame, roi);


		t2 = timeGetTime();
		printf("time is %u ms\n", (t2 - t1));

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

參考

https://blog.csdn.net/cosmispower/article/details/60601151

https://blog.csdn.net/childbor/article/details/82984853

https://blog.csdn.net/weixin_43434305/article/details/86740503

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章