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

发布了70 篇原创文章 · 获赞 73 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/yunge812/article/details/99681743
今日推荐