opencv视频 视频目标检测之后跟踪?

object-tracking 对视频作目标检测跟踪的VC++程序,使用了openCV开源库,包含帧差法、背景估计 高斯
238万源代码下载-
&文件名称: object-tracking
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 22084 KB
&&上传时间:
&&下载次数: 95
&&提 供 者:
&详细说明:对视频作目标检测跟踪的VC++程序,使用了openCV开源库,包含帧差法、背景估计法、高斯混合模型法以及卡尔曼滤波。可正常运行。-VC++ program for target tracking,based on openCV, incuding multiple algrithms,such as Karlman filter.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&object tracking\cvcam\cvcam.h&&...............\cvtypes.h&&...............\Debug\BuildLog.htm&&...............\.....\cv100.dll&&...............\.....\cvaux100.dll&&...............\.....\cvcam097.dll&&...............\.....\cxcore100.dll&&...............\.....\highgui100.dll&&...............\.....\libguide40.dll&&...............\.....\mt.dep&&...............\.....\ObjTrace.bsc&&...............\.....\ObjTrace.exe&&...............\.....\ObjTrace.exe.embed.manifest&&...............\.....\ObjTrace.exe.embed.manifest.res&&...............\.....\ObjTrace.exe.intermediate.manifest&&...............\.....\ObjTrace.ilk&&...............\.....\ObjTrace.obj&&...............\.....\ObjTrace.pch&&...............\.....\ObjTrace.pdb&&...............\.....\ObjTrace.res&&...............\.....\ObjTrace.sbr&&...............\.....\ObjTraceDlg.obj&&...............\.....\ObjTraceDlg.sbr&&...............\.....\StdAfx.obj&&...............\.....\StdAfx.sbr&&...............\.....\vc60.idb&&...............\.....\vc60.pdb&&...............\.....\vc80.idb&&...............\.....\vc80.pdb&&...............\.....\vc90.idb&&...............\.....\vc90.pdb&&...............\include\opencv\cv.h&&...............\.......\......\cv.hpp&&...............\.......\......\cvaux.h&&...............\.......\......\cvaux.hpp&&...............\.......\......\cvwimage.h&&...............\.......\......\cxcore.h&&...............\.......\......\cxcore.hpp&&...............\.......\......\cxeigen.hpp&&...............\.......\......\cxmisc.h&&...............\.......\......\highgui.h&&...............\.......\......\ml.h&&...............\.......\......2\calib3d\calib3d.hpp&&...............\.......\.......\.ontrib\contrib.hpp&&...............\.......\.......\.......\retina.hpp&&...............\.......\.......\..re\core.hpp&&...............\.......\.......\....\core_c.h&&...............\.......\.......\....\eigen.hpp&&...............\.......\.......\....\internal.hpp&&...............\.......\.......\....\mat.hpp&&...............\.......\.......\....\operations.hpp&&...............\.......\.......\....\types_c.h&&...............\.......\.......\....\version.hpp&&...............\.......\.......\....\wimage.hpp&&...............\.......\.......\features2d\features2d.hpp&&...............\.......\.......\.lann\allocator.h&&...............\.......\.......\.....\all_indices.h&&...............\.......\.......\.....\any.h&&...............\.......\.......\.....\autotuned_index.h&&...............\.......\.......\.....\composite_index.h&&...............\.......\.......\.....\config.h&&...............\.......\.......\.....\defines.h&&...............\.......\.......\.....\dist.h&&...............\.......\.......\.....\dummy.h&&...............\.......\.......\.....\dynamic_bitset.h&&...............\.......\.......\.....\flann.hpp&&...............\.......\.......\.....\flann_base.hpp&&...............\.......\.......\.....\general.h&&...............\.......\.......\.....\ground_truth.h&&...............\.......\.......\.....\hdf5.h&&...............\.......\.......\.....\heap.h&&...............\.......\.......\.....\hierarchical_clustering_index.h&&...............\.......\.......\.....\index_testing.h&&...............\.......\.......\.....\kdtree_index.h&&...............\.......\.......\.....\kdtree_single_index.h&&...............\.......\.......\.....\kmeans_index.h&&...............\.......\.......\.....\linear_index.h&&...............\.......\.......\.....\logger.h&&...............\.......\.......\.....\lsh_index.h&&...............\.......\.......\.....\lsh_table.h&&...............\.......\.......\.....\matrix.h&&...............\.......\.......\.....\miniflann.hpp&&...............\.......\.......\.....\nn_index.h&&...............\.......\.......\.....\object_factory.h&&...............\.......\.......\.....\params.h&&...............\.......\.......\.....\random.h&&...............\.......\.......\.....\result_set.h&&...............\.......\.......\.....\sampling.h&&...............\.......\.......\.....\saving.h&&...............\.......\.......\.....\simplex_downhill.h&&...............\.......\.......\.....\timer.h&&...............\.......\.......\gpu\devmem2d.hpp&&...............\.......\.......\...\gpu.hpp&&...............\.......\.......\...\gpumat.hpp&&...............\.......\.......\...\matrix_operations.hpp&&...............\.......\.......\...\stream_accessor.hpp&&...............\.......\.......\highgui\highgui.hpp&&...............\.......\.......\.......\highgui_c.h&&...............\.......\.......\imgproc\imgproc.hpp&&...............\.......\.......\.......\imgproc_c.h
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 关于PCNN进行图像分割的Matlab程序
&[] - CRC的matlab仿真程序,可以实现在matlab上针对crc的数据校验
&[] - FPAG中matlab的联合使用,对于要进行matlab和FPGA联合仿真有一定的指导作用。
&[] - 该代码的功能是基于Opencv2.3.0的行人检测,环境为vs2008,可运行,可能版本不同,将库改一下即可
&[] - 用OpenCV作的一个车牌识别程序,目前只能处理黄底黑字的车牌图像
&[] - 可以运行的质心跟踪的VC程序,很好,很值得学习。
&[] - c++卡尔曼滤波器进行图像处理。对目标进行稳定的跟踪,跟踪效果较好。
&[] - 帧差法背景建模,在外界环境变化情况不大时使用较为方便快捷
&[] - 运动检测的实例,适合初学入入门者,用到帧差法,区域分割等
&[] - 提供一个图像处理界面,可直接运行。能实现目标识别,检测,跟踪,对象匹配,字符识别。opencv 视频目标检测之后跟踪?_百度知道
opencv 视频目标检测之后跟踪?
是不是先要进行目标检测 然后再跟踪呢 那目标识别是什么意思?
都有什么算法吗
提问者采纳
识别之后才能跟踪啊
能举个例子吗,这三个先进行哪一步,每一步都有什么作用,thank
你看meanshift算法,抽取一张图片后,检测出目标,在下一张中检测出目标,匹配上一张的目标,就能跟踪了
提问者评价
其他类似问题
为您推荐:
其他1条回答
严格来说目标检测和目标跟踪是不同的,目标跟踪必然是一个视频之类的,目标检测可以是单帧的,比如常见的人脸识别。就算法来说camshift比较常见,大部分书都会讲到,但跟踪准确度不是特别高,现在为了提高精度一般会融入机器学习的,就是有正负样本的,但是机器学习还有分在线和线下的学习。目标检测和跟踪现在还处在比较初步的发展阶段,每年都会有新的算法出现的,各有利弊,主要看你要解决什么问题。最好是根据具体要跟踪的物体的特点(比如形状,颜色之类的)来设计自己的算法。
您可能关注的推广回答者:
opencv的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【转】&opencv学习笔记-入门(16)人脸检测、跟踪与人脸识别
原文地址:
一、背景知识
(1)从main入手的对原人脸检测历程进行了参考以及开进,&vector
定义的矢量string组,它和直接定义的数组相比,可以对矢量的长度单元进行相应的增加和减少。因而它是更利于存储一些未知的组数据的。
(2)&_finddata_t
这个变量的定义用来存储文件的各种信息,便于之后的文件的查找应用,在之后的识别过程中会用到。
那么到底如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct
_finddata_t&,函数为_findfirst、_findnext和_fineclose。具体如何使用,我会慢慢讲来~
&&&&&&&&首先讲这个结构体吧~struct
_finddata_t&,这个结构体是用来存储文件各种信息的。说实话,这个结构体的具体定义代码,我没有找到,不过还好,文档里面在_find里有比较详细的成员变量介绍。我基本上就把文档翻译过来讲吧:
&&&&&&&&unsignedatrrib:文件属性的存储位置。它存储一个unsigned单元,用于表示文件的属性。文件属性是用位表示的,主要有以下一些:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、_A_SUBDIR(文件夹)、_A_SYSTEM(系统)。这些都是在中定义的宏,可以直接使用,而本身的意义其实是一个无符号整型(只不过这个整型应该是2的几次幂,从而保证只有一位为1,而其他位为0)。既然是位表示,那么当一个文件有多个属性时,它往往是通过位或的方式,来得到几个属性的综合。例如只读+隐藏+系统属性,应该为:_A_HIDDEN
| _A_RDONLY | _A_SYSTEM&。
&&&&&&&&time_ttime_create:这里的time_t是一个变量类型(长整型?相当于long
int?),用来存储时间的,我们暂时不用理它,只要知道,这个time_create变量是用来存储文件创建时间的就可以了。
&&&&&&&&time_ttime_access:文件最后一次被访问的时间。
&&&&&&&&time_ttime_write:文件最后一次被修改的时间。
&&&&&&&&_fsize_tsize:文件的大小。这里的_fsize_t应该可以相当于unsigned整型,表示文件的字节数。
&&&&&&&&charname[_MAX_FNAME]:文件的文件名。这里的_MAX_FNAME是一个常量宏,它在头文件中被定义,表示的是文件名的最大长度。
&&&&&&&&以此,我们可以推测出,struct_finddata_t&,大概的定义如下:
struct_finddata_t
&&&&&&&&&&&&unsigned
&&&&&&&&&&&&
time_ttime_
&&&&&&&&&&&&
time_ttime_
&&&&&&&&&&&&
time_ttime_
&&&&&&&&&&&&_fsize_t
&&&&&&&&&&&&
charname[_MAX_FNAME];
&&&&&&&&前面也说了,这个结构体是用来存储文件信息的,那么如何把一个硬盘文件的文件信息“存到”这个结构体所表示的内存空间里去呢?这就要靠_findfirst、_findnext和_fineclose三个函数的搭配使用了。
&&&&&&&&首先还是对这三个函数一一介绍一番吧……
&&&&&&&&long_findfirst(
char *filespec, struct _finddata_t *fileinfo );
&&&&&&&&返回值:如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。
&&&&&&&&参数:
filespec:标明文件的字符串,可支持通配符。比如:*.c,则表示当前文件夹下的所有后缀为C的文件。
fileinfo:这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。函数成功后,函数会把找到的文件的信息放入这个结构体中。
&&&&&&&&int_findnext(
long handle, struct _finddata_t *fileinfo );
&&&&&&&&返回值:若成功返回0,否则返回-1。
&&&&&&&&参数:
&&&&&&&&handle:即由_findfirst函数返回回来的句柄。
fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。
&&&&&&&int_findclose(
long handle );
&&&&&&&&返回值:成功返回0,失败返回-1。
&&&&&&&&参数:
&&&&&&&&handle:_findfirst函数返回回来的句柄。
&&&&&&&&大家看到这里,估计都能猜到个大概了吧?先用_findfirst查找第一个文件,若成功则用返回的句柄调用_findnext函数查找其他的文件,当查找完毕后用,用_findclose函数结束查找。恩,对,这就是正确思路。下面我们就按照这样的思路来编写一个查找C:\WINDOWS文件夹下的所有exe可执行文件的程序。
&&&&&&&&当然,这个文件的查找是在指定的路径中进行,如何遍历硬盘,在整个硬盘中查找文件呢?大家可以在网络上搜索文件递归遍历等方法,这里不再做进一步介绍。
&&&&&&&&细心的朋友可能会注意到我在程序的末尾用了一个system函数。这个与程序本身并没有影响,和以前介绍给大家的使用getchar()函数的作用相同,只是为了暂停一下,让我们能看到命令提示符上输出的结果而已。不过system函数本身是一个非常强大的函数。大家可以查查MSDN看看~简单来说,它是一个C语言与操作系统的相互平台,可以在程序里通过这个函数,向操作系统传递command命令
我在代码中定义
在查找过程中&_findfirst("images\\*.*",
&file))获取images文件夹下的文件信息,并且&&file
获取问价夹下的所有文件的结构体指针,并且供后序的使用&_findnext( lf,
,查找邻接的下一个具体的文件信息,之后将文件的名字都传给了names矢量组。当检索完毕,退出此检索过程。
& size_t scaleOptLen = scaleOpt.length();
& //typedef unsigned __int64 &
&size_t; 即size_t stand for the unsigned
size_t表示的是unsigned
(4)级联分类器
OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade
Classification)。注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征。
先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读操作read、复制clone、获得特征类型getFeatureType,分配图片分配窗口的操作setImage、setWindow,计算有序特征calcOrd,计算绝对特征calcCat,创建分类器特征的结构create函数。级联分类器类CascadeClassifier。目标级联矩形的分组函数groupRectangles。
接下来,我尝试使用CascadeClassifier这个级联分类器类检测视频流中的目标(haar支持的目标有人脸、人眼、嘴、鼻、身体。这里尝试比较成熟的人脸和眼镜)。用load函数加载XML分类器文件(目前提供的分类器包括Haar分类器和LBP分类器(LBP分类器数据较少))具体步骤如下:
这里再补充一点:后来我又进行了一些实验,对正面人脸分类器进行了实验,总共有4个,alt、alt2、alt_tree、default。对比下来发现alt和alt2的效果比较好,alt_tree耗时较长,default是一个轻量级的,经常出现误检测。所以还是推荐大家使用haarcascade_frontalface_atl.xml和haarcascade_frontalface_atl2.xml。
(5)跟踪用的CamShift算法
详细参见本博文:
CamShift算法,即"Continuously Apative
Mean-Shift"算法,是一种运动跟踪算法。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。我把这个算法分解成三个部分,便于理解:
Projection计算。
CamShift算法
、Back Projection计算
计算Back Projection的步骤是这样的:
计算被跟踪目标的色彩直方图。在各种色彩空间中,只有HSI空间(或与HSI类似的色彩空间)中的H分量可以表示颜色信息。所以在具体的计算过程中,首先将其他的色彩空间的值转化到HSI空间,然后会其中的H分量做1D直方图计算。
根据获得的色彩直方图将原始图像转化成色彩概率分布图像,这个过程就被称作"Back Projection"。
在OpenCV中的直方图函数中,包含Back
Projection的函数,函数原型是:
void cvCalcBackProject(IplImage** img, CvArr** backproject, const
CvHistogram* hist);
传递给这个函数的参数有三个:
IplImage** img:存放原始图像,输入。
CvArr** backproject:存放Back Projection结果,输出。
CvHistogram* hist:存放直方图,输入
1.准备一张只包含被跟踪目标的图片,将色彩空间转化到HSI空间,获得其中的H分量
2.计算H分量的直方图,即1D直方图
3.计算Back
Projection:
Mean Shift算法这里来到了CamShift算法,OpenCV实现的第二部分,这一次重点讨论Mean
Shift算法。
在讨论Mean
Shift算法之前,首先讨论在2D概率分布图像中,如何计算某个区域的重心(Mass Center)的问题
Shift算法的具体步骤,Mean Shift算法可以分为以下4步:
1~.选择窗的大小和初始位置.
2~.计算此时窗口内的Mass
3~.调整窗口的中心到Mass
4~.重复2和3,直到窗口中心"会聚",即每次窗口移动的距离小于一定的阈值。
CamShift算法
在了解了MeanShift算法以后,我们将MeanShift算法扩展到连续图像序列(一般都是指视频图像序列),这样就形成了CamShift算法。CamShift算法的全称是"Continuously
Apaptive Mean-SHIFT",它的基本思想是视频图像的所有帧作MeanShift运算,并将上一帧的结果(即Search
Window的中心和大小)作为下一帧MeanShift算法的Search
Window的初始值,如此迭代下去,就可以实现对目标的跟踪。整个算法的具体步骤分5步:
1:将整个图像设为搜寻区域。
2:初始话Search Window的大小和位置。
3:计算Search Window内的彩色概率分布,此区域的大小比Search Window要稍微大一点。
4:运行MeanShift。获得Search Window新的位置和大小。
5:在下一帧视频图像中,用Step 3获得的值初始化Search Window的位置和大小。跳转到Step
3继续运行。
(6)相关系数的应用
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://my.csdn.net/uploads//_2644.jpg" ALT="" STYLE="border-style: max-width: 100%;"
TITLE="【转】&opencv学习笔记-入门(16)人脸检测、跟踪与人脸识别" />
用来进行识别的!!!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于OPENCV的运动目标检测与跟踪技术研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
该文档贡献者很忙,什么也没留下。
&#xe602; 下载此文档
正在努力加载中...
视频运动目标检测与跟踪算法研究及OpenCV实现
下载积分:100
内容提示:视频运动目标检测与跟踪算法研究及OpenCV实现
文档格式:PDF|
浏览次数:1100|
上传日期: 22:35:59|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe612;
该用户还上传了这些文档
视频运动目标检测与跟踪算法研究及OpenCV实现
官方公共微信

我要回帖

更多关于 opencv视频 的文章

 

随机推荐