配置OpenCV3、KCF体验、VS中的配置更改

来源:互联网 发布:windows屏幕旋转 编辑:程序博客网 时间:2024/06/05 04:10

OpenCV3在opencv_contrib中新增了KCF Tracker,故想体验一下。

OpenCV3的配置见这里。

我之前给VS配置的是OpenCV2.4.13,这次更改为OpenCV3.1.0后,将Project->属性中的包含目录改为:D:\opencv310\opencv\build\include\opencv2和D:\opencv310\opencv\build\include\opencv后,发现报重定义的错误,怀疑没有改成功。遂直接在“属性管理器”直接更改Microsoft.CPP.x64.user文件,就ok了。


测试KCF的代码如下:

#include <opencv2/opencv.hpp>  #include <core/types.hpp>  //声明Rect2d#include <opencv2/tracking/tracker.hpp>   //声明Tracker类型using namespace std;using namespace cv;int main() {// declares all required variables  //! [vars]  Rect2d roi;Mat frame;//! [vars]  // create a tracker object  Ptr<Tracker> tracker = Tracker::create("KCF");//! [create]  // set input video  //! [setvideo]  std::string video = "D:\\Project\\MotionDetector\\MotionDetection\\fastMCD-master\\data\\LosAngelesCarChase05September2014_KABC.avi";cv::VideoCapture cap(video);//! [setvideo]  // get bounding box  //! [getframe]  cap >> frame;//! [getframe]  //! [selectroi]选择目标roi以GUI的形式  roi = selectROI("tracker", frame);//! [selectroi]  //quit if ROI was not selected  if (roi.width == 0 || roi.height == 0)return 0;// initialize the tracker  //! [init]  tracker->init(frame, roi);//! [init]  // perform the tracking process  printf("Start the tracking process\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  //! [update]  tracker->update(frame, roi);//! [update]  //! [visualization]  // draw the tracked object  rectangle(frame, roi, Scalar(255, 0, 0), 2, 1);// show image with the tracked object  imshow("tracker", frame);//! [visualization]  //quit on ESC button  if (waitKey(1) == 27)break;}return 0;}



1.KCF速度很快的,720P可以达到30fps。

2.KCF对部分遮挡的效果还是很好的,但处理全遮挡不行,因为毕竟不属于Long Term Tracker,没有重检测机制,还是要结合TLD比较好。



0 0
原创粉丝点击