摄像头对物体进行跟踪kcf算法
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算法相关推荐
- 单目标跟踪--KCF算法(核化相关滤波算法)Python实现(超详细)
Tracking-KCF Algorithm 注:本文涉及的算法的代码实践已上传至GitHub,恳求大佬们指点!^ _ ^ 1. 目标检测跟踪与算法背景概述 目标跟踪任务在许多的计算机视觉系统中都 ...
- Linux C++ 目标跟踪KCF算法工程配置
KCF算法涉及论文: [1] J. F. Henriques, R. Caseiro, P. Martins, J. Batista, "High-Speed Tracking with K ...
- python-opencv+手机IP摄像头实现视觉目标跟踪KCF
提示:编辑中,本篇文章未完成 文章目录 前言 一.硬件平台 二.安装python版本的opencv 1.安装pip3 2. 安装opencv-pythonopencv-python和 opencv-c ...
- 将KCF算法中的输入图像改为自己的摄像头(C++)
将KCF算法中的输入图像改为自己的摄像头(C++) 原KCF算法中作者指定的输入图像是文件中的图像序列,初始化的位置也是从文件中读取的,如果有不太了解的可以看下我之前的一篇博客 KCF代码运行并显示效 ...
- KCF算法(相关滤波算法) 跟踪目标
这是笔者目前碰到的性能最好的传统目标跟踪算法,所以这里也简单介绍下这个算法的由来. 一.算法介绍 KCF全称为Kernel Correlation Filter 核相关滤波算法.是在2014年由Joa ...
- OpenCV 3 Tracking API目标跟踪学习笔记——定义、物体跟踪常用算法、demo
今天开始接触目标跟踪 本文翻译自https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/#opencv-tracking ...
- 谷歌最新开源BundleTrack: 无需任何CAD模型的6D物体姿态跟踪算法
视频地址:在公众号「3D视觉工坊」,后台回复「谷歌X实习生」,即可直接下载. 最近,谷歌X的实习生Bowen Wen新开源了用于6D物体姿态跟踪的代码BundleTrack,该工作已经被今年的IEEE ...
- kcf算法流程_基于运动检测与KCF算法的目标跟踪方法
基于运动检测与 KCF 算法的目标跟踪方法 易 诗,唐 文 [摘 要] 摘要:近年来机器视觉技术广泛采用于各个领域,本文设计实现了一 种基于运动检测与 KCF 算法的目标跟踪方法,该方法相对于传统单一 ...
- kcf算法c语言,基于KCF跟踪算法的目标轨迹记录系统的设计与实现
摘要: 计算机视觉一直属于比较热门的研究领域.计算机视觉中的一个重要分支是目标的跟踪.目标跟踪以及轨迹记录在交通监控,行人流量,天文观测,导航制导,武器装备的研发等领域有着很实用的价值.KCF(ker ...
最新文章
- 云计算正在告别DIY时代 阿里云专有云挑起企业级市场大梁
- caffe-cuda测试
- 剔除重复_微服务发生故障后,我是如何做到自动剔除异常的Server?
- 青茶什么时候拆_为什么铁观音这么香?到底有没有添加香精?看完你就知道了...
- Python 保存数组至.mat文件,报错:AttributeError: 'numpy.ndarray' object has no attribute 'items'
- 查看mysql语句运行时间的2种方法
- oracle 启动监听提示 :The listener supports no services
- MyBatis二级缓存的关闭
- I. Intersections
- Android 下拉式抽屉折叠动画
- 数据库OceanBase创始人阳振坤:通关TPC-C到底有多难?
- 《Python编程从入门到实践》记录之Python函数定义、使用
- 电脑显示苹果5s未连接服务器怎么办啊,iphone5s数据线连接不上电脑怎么办【解决方法】...
- 中读取数据_Flink入门实战 (中)
- 2753:走迷宫(dfs+初剪)//可以说是很水了。。。
- python的参数传递机制
- 微信最新的系统默认emoji表情集
- 留不下的城市,回不去的家乡,真得么?
- 手机浏览器 css3,css3在不同型号手机浏览器上的兼容一览表
- 数据挖掘与数据化运营实战. 3.5 交叉销售模型
热门文章
- 交换a,b值的三种方法
- 计算机关闭这些程序,电脑中哪些进程可以关闭? 节约资源
- 报错:Module parse failed: ‘return‘ outside of function (4:1) You may need an appropriate loader
- 牛顿法迭代法 | matlab实现
- win10升级win11后office文件无法直接打开的问题
- Leetcode_116_Populating Next Right Pointers in Each Node
- 痞子衡嵌入式:存储器大厂Micron的NOR Flash芯片特殊丝印设计(FBGA代码)
- 主板常见故障维修24例
- 自定义treeview控件,实现右键菜单编辑功能
- android 8.0 edittext,android – Autofill框架更新8.1导致EditText崩溃