KCF作者主页http://www.robots.ox.ac.uk/~joao/circulant/
代码谨是对runtracker.cpp进行了修改,以便支持对视频和摄像头的跟踪,源代码是对图像序列的跟踪。

贴出修改后的runkcftracker.cpp

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>#include "kcftracker.hpp"
using namespace std;
using namespace cv;
bool drawing_box = false;
bool gotBB = false;
Rect box;
//画矩形框
void drawBox(Mat& image, CvRect box, Scalar color, int thick){rectangle(image, cvPoint(box.x, box.y), cvPoint(box.x + box.width, box.y + box.height), color, thick);
}
//鼠标追踪函数
void mouseHandler(int event, int x, int y, int flags, void *param){switch (event){case CV_EVENT_MOUSEMOVE:if (drawing_box){box.width = x - box.x;box.height = y - box.y;}break;case CV_EVENT_LBUTTONDOWN:drawing_box = true;box = Rect(x, y, 0, 0);break;case CV_EVENT_LBUTTONUP:drawing_box = false;if (box.width < 0){box.x += box.width;box.width *= -1;}if (box.height < 0){box.y += box.height;box.height *= -1;}gotBB = true;   //已经获得bounding box  break;}
}
int main(int argc, char* argv[]){VideoCapture capture;      //打开摄像头函数//capture.open("E://lihaibiao//目标跟踪视频//Woman.avi");/ Jogging \ Basketball \ Woman\ Bolt \ CarScale \ David \ Girlcapture.open(0);if (!capture.isOpened()){cout << "capture device failed to open!" << endl;return 1;}//Register mouse callback to draw the bounding box  cvNamedWindow("KCF", CV_WINDOW_AUTOSIZE);cvSetMouseCallback("KCF", mouseHandler, NULL);  //用鼠标选中初始目标的bounding box  bool HOG = true;//bool FIXEDWINDOW = false;//bool MULTISCALE = true;bool SILENT = false;bool LAB = false;///固定窗口跟踪//bool FIXEDWINDOW = true;bool MULTISCALE = false;//// Create KCFTracker objectKCFTracker tracker(HOG, FIXEDWINDOW, MULTISCALE, LAB);// Frame readedMat frame;// Tracker resultsRect result;/capture >> frame                                                                                                                                                                                                                                                                             ;////Initialization  while (!gotBB){//capture >> frame;//drawBox(frame, box,(0,0,255),2);  //把bounding box 画出来  imshow("KCF", frame);if (cvWaitKey(33) == 'q')return 0;}/drawBox(frame, box, (0, 0, 255), 2);  //把bounding box 画出来  /////Remove callback  cvSetMouseCallback("KCF", NULL, NULL);  //如果已经获得第一帧用户框定的box了,就取消鼠标响应  printf("Initial Bounding Box = x:%d y:%d h:%d w:%d\n", box.x, box.y, box.width, box.height);tracker.init(box, frame);//初始化追踪框///加入帧数参数//int frameCount = 0;double t = 0;while (capture.read(frame)){加入检测的时间//t = (double)cvGetTickCount();frameCount++;//result = tracker.update(frame);//追踪//画矩形框rectangle(frame, Point(result.x, result.y), Point(result.x + result.width, result.y + result.height), Scalar(0, 255, 255), 1, 8);if (!SILENT){imshow("KCF", frame);waitKey(10);//输出平均帧率//if (frameCount % 20 == 0){t = (double)cvGetTickCount() - t;cout << "平均帧率:FPS = "  <<  ((double)cvGetTickFrequency()*1000.) *1000 / t << endl;}}}}

摄像头对物体进行跟踪kcf算法相关推荐

  1. 单目标跟踪--KCF算法(核化相关滤波算法)Python实现(超详细)

    Tracking-KCF Algorithm 注:本文涉及的算法的代码实践已上传至GitHub,恳求大佬们指点!^ _ ^ 1. 目标检测跟踪与算法背景概述 ​ 目标跟踪任务在许多的计算机视觉系统中都 ...

  2. Linux C++ 目标跟踪KCF算法工程配置

    KCF算法涉及论文: [1] J. F. Henriques, R. Caseiro, P. Martins, J. Batista, "High-Speed Tracking with K ...

  3. python-opencv+手机IP摄像头实现视觉目标跟踪KCF

    提示:编辑中,本篇文章未完成 文章目录 前言 一.硬件平台 二.安装python版本的opencv 1.安装pip3 2. 安装opencv-pythonopencv-python和 opencv-c ...

  4. 将KCF算法中的输入图像改为自己的摄像头(C++)

    将KCF算法中的输入图像改为自己的摄像头(C++) 原KCF算法中作者指定的输入图像是文件中的图像序列,初始化的位置也是从文件中读取的,如果有不太了解的可以看下我之前的一篇博客 KCF代码运行并显示效 ...

  5. KCF算法(相关滤波算法) 跟踪目标

    这是笔者目前碰到的性能最好的传统目标跟踪算法,所以这里也简单介绍下这个算法的由来. 一.算法介绍 KCF全称为Kernel Correlation Filter 核相关滤波算法.是在2014年由Joa ...

  6. OpenCV 3 Tracking API目标跟踪学习笔记——定义、物体跟踪常用算法、demo

    今天开始接触目标跟踪 本文翻译自https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/#opencv-tracking ...

  7. 谷歌最新开源BundleTrack: 无需任何CAD模型的6D物体姿态跟踪算法

    视频地址:在公众号「3D视觉工坊」,后台回复「谷歌X实习生」,即可直接下载. 最近,谷歌X的实习生Bowen Wen新开源了用于6D物体姿态跟踪的代码BundleTrack,该工作已经被今年的IEEE ...

  8. kcf算法流程_基于运动检测与KCF算法的目标跟踪方法

    基于运动检测与 KCF 算法的目标跟踪方法 易 诗,唐 文 [摘 要] 摘要:近年来机器视觉技术广泛采用于各个领域,本文设计实现了一 种基于运动检测与 KCF 算法的目标跟踪方法,该方法相对于传统单一 ...

  9. kcf算法c语言,基于KCF跟踪算法的目标轨迹记录系统的设计与实现

    摘要: 计算机视觉一直属于比较热门的研究领域.计算机视觉中的一个重要分支是目标的跟踪.目标跟踪以及轨迹记录在交通监控,行人流量,天文观测,导航制导,武器装备的研发等领域有着很实用的价值.KCF(ker ...

最新文章

  1. 云计算正在告别DIY时代 阿里云专有云挑起企业级市场大梁
  2. caffe-cuda测试
  3. 剔除重复_微服务发生故障后,我是如何做到自动剔除异常的Server?
  4. 青茶什么时候拆_为什么铁观音这么香?到底有没有添加香精?看完你就知道了...
  5. Python 保存数组至.mat文件,报错:AttributeError: 'numpy.ndarray' object has no attribute 'items'
  6. 查看mysql语句运行时间的2种方法
  7. oracle 启动监听提示 :The listener supports no services
  8. MyBatis二级缓存的关闭
  9. I. Intersections
  10. Android 下拉式抽屉折叠动画
  11. 数据库OceanBase创始人阳振坤:通关TPC-C到底有多难?
  12. 《Python编程从入门到实践》记录之Python函数定义、使用
  13. 电脑显示苹果5s未连接服务器怎么办啊,iphone5s数据线连接不上电脑怎么办【解决方法】...
  14. 中读取数据_Flink入门实战 (中)
  15. 2753:走迷宫(dfs+初剪)//可以说是很水了。。。
  16. python的参数传递机制
  17. 微信最新的系统默认emoji表情集
  18. 留不下的城市,回不去的家乡,真得么?
  19. 手机浏览器 css3,css3在不同型号手机浏览器上的兼容一览表
  20. 数据挖掘与数据化运营实战. 3.5 交叉销售模型

热门文章

  1. 交换a,b值的三种方法
  2. 计算机关闭这些程序,电脑中哪些进程可以关闭? 节约资源
  3. 报错:Module parse failed: ‘return‘ outside of function (4:1) You may need an appropriate loader
  4. 牛顿法迭代法 | matlab实现
  5. win10升级win11后office文件无法直接打开的问题
  6. Leetcode_116_Populating Next Right Pointers in Each Node
  7. 痞子衡嵌入式:存储器大厂Micron的NOR Flash芯片特殊丝印设计(FBGA代码)
  8. 主板常见故障维修24例
  9. 自定义treeview控件,实现右键菜单编辑功能
  10. android 8.0 edittext,android – Autofill框架更新8.1导致EditText崩溃