camshift 实现自动化跟踪的小技巧

meanshift 与 camshift 跟踪算法比较 MeanShift Algorithm思想很简单:利用概率密度的梯度爬升来寻找局部最优...具体参考文献:[1]The Estimation of the Gradient of a Density Function, with Applications in Pattern Recognition   (1975)[2]Mean shift, mode seeking, and cl 阅读详情

camshift 实现自动化跟踪的小技巧

opencv 提供了使用基于颜色的跟踪算法camshift, 很好的算法,可是它是个半自动的算法,它需要用户在跟踪界面设定跟踪的目标。怎么预先设定目标再来跟踪呢?
本人偷了个懒,加入了用一张图片来设定跟踪的目标,在启动中加载图片,生成跟踪需要的histogram。这样实现了自动化的跟踪吧。

步骤如下:
1. 找到你需要跟踪的物体,拿到摄像头前,照一张相(print screen),这里需要注意的是,由于光线变化,临近摄像头会亮一些,离远会暗一些,那么最好跟踪的物体的拍摄颜色与实际跟踪中颜色相近。

 

2. 打开画笔功能,新建一张图片(320*240),大小与视频源图像一致,把物体截取放大,这样跟踪的颜色区域就都在图像中了。

例如这是一个跟踪绿色物体的图片

3。在代码中加入

void loadTemplateImage()
{
 IplImage *tempimage = cvLoadImage("F:/OM_tracking/Test cam shift/ShadowTrack/Debug/green.bmp",1);
 cvCvtColor( tempimage, hsv, CV_BGR2HSV );
 int _vmin = vmin, _vmax = vmax;

 cvInRangeS( hsv, cvScalar(0,smin,MIN(_vmin,_vmax),0),
  cvScalar(180,256,MAX(_vmin,_vmax),0), mask );
  
 cvSplit( hsv, hue, 0, 0, 0 );
 
 selection.x = 1;
 selection.y = 1;
 selection.width = 320-1;
 selection.height= 240-1;

 cvSetImageROI( hue, selection );
 cvSetImageROI( mask, selection );
 cvCalcHist( &hue, hist, 0, mask );

 float max_val = 0.f;  
    
 cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 );
 cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 );
 cvResetImageROI( hue );
 cvResetImageROI( mask );
 track_window = selection;
 track_object = 1;

 cvReleaseImage(&tempimage);

}

4,去掉原来的生成Hist的代码。在启动时候加入loadTemplateImage

5.运行代码,看结果吧. 代码这里下载

 

 

 

目标跟踪--CamShift 转载请注明出处!!!http://blog.youkuaiyun.com/zhonghuan1992   目标跟踪--CamShift                CamShift全称是ContinuouslyAdaptive Mean Shift,即连续自适应的MeanShift算法,而MeanShift算法,首先得对MeanShift算法有个初步的了解,可以参考这里。而CamShif 阅读详情

相关推荐

基于camshift的运动物体跟踪分析

介绍了Camshift算法的原理以及应用

cxf7394373的专栏 4134

基于行人跟踪的例子(卡尔曼滤波+CAMShift)

最近在看目标跟踪的东西,写了一个最基本的opencv实现的程序,没有用到深度的东西,不过这是一个基础,任何深度的东西都是在这上面进行的,所以先搞懂这个demo吧哈哈。 基本工作流程是: 1)检查第一帧 2)检查后面输入的帧,从场景的开始通过背景分割器来识别场景中的行人 3)为每个行人建立ROI,并利用Kalman/CAMShift来跟踪行人ID 4)检查下一帧是否有进入场景的新行人 ...

weixin_42755375的博客 6990

OpenCV利用Camshift实现目标追踪

【代码】OpenCV利用Camshift实现目标追踪。

qq_53545309的博客 1545

roi+camshift+kalman行人跟踪

import cv2 import numpy as np import os.path as path import argparse parser = argparse.ArgumentParser() parser.add_argument("-a", "--algorithm", help = "m (or nothing) for meanShift and c for ca...

运动的肉肉子的博客 1538

ArcGIS:如何进行半自动化跟踪和全自动化跟踪?

半自动化跟踪、全自动化跟踪。

炒茄子的博客 7477

Meanshift-Camshift全自动跟踪

VC++环境下OpenCV开发的Camshift跟踪!下真正实现了全自动跟踪算法,注释非常详细!

目标跟踪:CamShift算法

1.前言 camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置。 camshift的核心步骤仍然是Meanshift,只是在距离相似性度量的基础之上,又增加了图像灰度相似性的度量。两者共同作用,实现了目标的跟踪。 2.MeanShift

沈春旭的博客 2万+

Camshift 全自动跟踪算法/opencv

代码利用混合高斯模型进行背景训练,再利用Camshift进行目标跟踪,实现了对目标的自动检测与跟踪。

camShift跟踪算法介绍

CamShift算法的全称是"Continuously Adaptive Mean-SHIFT",即:连续自适应的MeanShift算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针

计算机视觉小菜鸟的专栏 2万+

基于opencv的camshift算法视频运动跟踪代码

基于opencv的camshift算法视频运动跟踪代码,在VS2005中的工程,原来的代码是读取AVI视频文件,已经修改为读取摄像头运行。

camshift+kalman视频跟踪matlab代码

camshift+kalman视频跟踪matlab代码,主要是对人脸的识别跟踪,也可以自己拍些合适的视频测试,last.m是主函数,程序是通的,下载就能使用。

C++ OpenCV视频操作之CamShift跟踪算法

前言CamShift算法,全称是 Continuously AdaptiveMeanShift,顾名思义,它是对Mean Shift 算法的改进,能够自动调节搜索窗口大小来适应目标的大...

Vaccae的博客 1839

opencv的camshift程序+注释

带有注释的opencv的camshift程序 带有注释的opencv的camshift程序 带有注释的opencv的camshift程序

Camshift算法原理及其Opencv实现

Camshift原理 camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置。 分为三个部分: 1--色彩投影图(反向投影): (1).RGB颜色空间对光照亮度变化较为敏感,为了减少此变化对跟踪效果的影响,首先将图像从RGB空间转换到HSV空间。(2).然

雷霄骅(leixiaohua1020)的专栏 4万+

CamshiftTrack_目标跟踪_行人跟踪_车辆跟踪_

物体运动的跟踪,比如行人和车辆等物体的跟踪

AI风控系统中的实时决策架构:架构师的关键设计

当用户点击「确认支付」时,一场毫秒级的“欺诈攻防战”正在后台悄然打响:系统需要在100ms内完成用户行为特征提取→欺诈模型推理→规则引擎校验→最终决策返回。这就是AI风控实时决策架构的核心——用技术对抗“实时化的欺诈手段”。本文将以「餐厅智能点餐系统」为类比,拆解实时风控架构的每一层逻辑:从“如何快速拿到用户的实时行为特征”(像服务员实时收集顾客的忌口),到“如何让模型和规则协同决策”(像厨师长结合菜谱和经验判断菜能不能做),再到“如何保证系统扛住大促的高并发”(像餐厅加桌子应对客流高峰)。我们会用。

2502_91592937的博客 1472

目标跟踪之Camshift

基本概念 camshift("continuously adaptive mean-shift"的缩写),即连续自适应的 算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视频

阿兵-AI医疗的专栏 1156

LTE信令流程实战:从Attach到Service Request的完整解析(附常见问题排查)

本文深入解析LTE信令流程中的Attach和Service Request关键环节,提供从基础原理到实战排查的完整指南。涵盖鉴权、承载建立等核心步骤,分析常见故障模式及优化方案,并附赠信令跟踪工具使用技巧,助力通信工程师提升网络运维效率。

alpha的博客 319
上一篇: 如何利用差分方法实现虚拟选择菜单
下一篇: 代码下载列表(资源整理)
hardVB
博客等级 码龄26年 257粉丝 58原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值