OpenCV学习(27) 直方图(4)

      我们可以利用OpenCV的直方图,backproject直方图和meanshift算法来跟踪物体。下面通过简单的例子来说明如何实现跟踪算法,我们有两幅狒狒的图片,如下图所示:我们首先在左图中框选狒狒的脸,计算出框选区域的色度(HSV空间的H)直方图,然后在image2中,backproject该直方图,得到每个像素点属于该直方图的概率图。

 

imageimage

      得到的概率图之后,我们去掉图中低饱和度的像素,然后二值化,最后对该图使用meanshift算法,得到密度最大的区域,这个区域就是我们跟踪的目标区域。

image

注意下面去掉低饱和度像素的方法(HSV空间中的S分量表示饱和度):

cv::cvtColor(image, hsv, CV_BGR2HSV);
// 按通道分成3副图像
cv::split(hsv,v);
// 标示低饱和度的像素
cv::threshold(v[1],v[1],minSat,255,cv::THRESH_BINARY);

// 得到色度back-projection
result= finder.find(hsv,0.0f,180.0f,ch,1);


// 减少低饱和度像素
cv::bitwise_and(result,v[1],result);

 

     meanshift算法的代码如下,TermCriteria为迭代中值条件,最大迭代次数10,迭代精度0.01,只有这两个条件都满足的时候,迭代才会结束。迭代结束后,rect中存储的就是目标区域的位置。

    cv::Rect rect(110,260,35,40);
    cv::rectangle(image, rect, cv::Scalar(0,0,255));
    cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER,10,0.01);
    cv::meanShift(result,rect,criteria);
    cv::rectangle(image, rect, cv::Scalar(255,0,0));

 

程序代码:工程FirstOpenCV22

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL源码编译与初始化

MySQL源码编译与初始化 链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ 提取码:ekpy 复制这段内容后打开百度网盘手机App,操作更方便哦 1.MySQL简介 1.1数据库有很多种类: 关系型数据库--->MySQL Oracle非关系型数据库…

uboot中的虚拟地址映射

1、DRAM有效范围 (1)DMC0上允许的地址范围是20000000-3FFFFFFF(一共是512MB),而X210开发板实际只接了256MB物理内存,SoC允许我们给这256MB挑选地址范围。在裸机中DMC0的地址范围是0x20000000-0x2FFFFFFF&am…

.net remoting 技术

Remoting编辑目 录 1简介 2主要元素 3两种通道 4激活方式 5对象定义 6服务器 7客户 8基础补充 9小结 1简介 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式 。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级&#x…

浪客剑心:位图法Bitmap算法分析

看了博客园里一篇文章《一道腾讯前端试题,谁来试试身手》,正好以前了解过位图法,确实不错。位图法适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在,如可标记1为存在,0为不存…

GoogLeNet结构

Inception V1 GoogLeNet结构(Inception V1) 输入为224x224的RGB图像,‘#3x3 reduce’和‘#5x5 reduce’表示3x3和5x5卷积之前1x1的卷积核的个数。 转载于:https://www.cnblogs.com/Peyton-Li/p/11201038.html

uboot的移植——移植三星官方的uboot到x210开发板

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、移植总结 二、移植过程 1、获取三星官方版本的uboot (1)由于X210开发板使用S5PV210这款CPU,因此我们应该寻找一块使用相同CPU的开发板,然后以这块…

Hadoop 文件命令

为什么80%的码农都做不了架构师?>>> * 文件操作 * 查看目录文件 * $ hadoop dfs -ls /user/cl * * 创建文件目录 * $ hadoop dfs -mkdir /user/cl/temp * * 删除文件 * $ hadoop dfs -rm /user/cl/temp/a.txt * * 删除目录与目录下所有文件 …

Swans and ducks, Piešťany, Slovakia

What Makes This a Photo of the Day? I love the slightly off-kilter composition here, with the cluster of birds near the bottom of the frame. This gives a sense of movement and allows the eye to take in the peripheral elements—the ripples of the water and…

python day15

今日内容 昨日内容补充: 对于两个文件中的互相导入md模块问题分析: x 1from md import xprint(x)# md中的xfrom md import xx 1000print(x)# 当前文件中的x __all__ 列表写什么,执行导入语句那个文件就能拿到什么; __all__不写的情况,默认是将所在文件所有的名字都暴露给导入…

如何有效抓取SQL Server的BLOCKING信息

2019独角兽企业重金招聘Python工程师标准>>> SQL Server允许并发操作,BLOCKING是指在某一操作没有完成之前,其他操作必须等待,以便于保证数据的完整性。BLOCKING的解决方法要查看BLOCKING的头是什么,为什么BLOCKING头上…

iOS开发篇——OC 协议和代理设计模式介绍

蓝鸥iOS培训讲师推荐:好久没和大家沟通了,没和大家沟通了,今天就和大家说说有关OC内容协议和代理设计模式。首先要讲的是协议一、协议OC中的协议和接口有些相似,协议中定义的方法,在类中实现。协议一般情况下是用来实现…

uboot的移植——移植uboot官方的uboot到x210开发板

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考内容 uboot——官网下载直接移植(一) - biaohc - 博客园 uboot——官网下载直接移植(二) - biaohc - 博客园 uboot移植(一)配置过程分析_LouisGou的博客-CSDN博客 获取…

[转载]使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)...

前言 本章将实现非常实用的功能——下载在线视频。涉及到多线程、线程更新UI等技术,还需思考产品的设计,如何将新加的功能更好的融入到现有的产品中,并不是简单的加一个界面就行了,欢迎大家交流产品设计和技术细节实现&#xff01…

Hibernate上路_16-继承关系映射

2019独角兽企业重金招聘Python工程师标准>>> 例:员工Employee分为正式工SalaryEmployee和临时工HourEmployee。子类表的字段都不能使用非空约束。 1.三种继承关系的建表方式: 1)父类、子类在同一张表,表中有“辨别者…

C++起航篇——bool类型,输入输出,命名空间

以下内容源于慕课网http://www.imooc.com/course/list?ccplusplus的学习整理,如有侵权,请告知删除。 慕课网学习内容 一、起航 二、离航 三、远征 封装继承多态模板 1、c的新特征 (1)新数据类型 bool (true和fals…

C++离航篇——引用,const

以下内容源于http://www.imooc.com/learn/381的学习整理,如有侵权,请告知删除。 一、引用 (1)引用即定义别名 对引用进行操作即对本身操作;int a10; int &ba; //定义了a的别名b;注意别名是不包括&…

【广搜】棋盘游戏

题目描述 在一个4*4的棋盘上有8个黑棋和8个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的。移动棋子的规则是交换相邻两个棋子。现在给出一个初始棋盘和一个最终棋盘,要求你找出一个最短的移动序列使初始棋盘变为最终棋盘。Klux说…

C++离航篇——函数默认参数、函数重载、内敛函数

1、函数的默认参数 2、函数的重载 (1)在相同的作用域内,用同一个函数名定义的多个函数,其中每个函数的参数个数、参数类型不同。 3、内联函数 (1)编译的时候,将函数体代码和相应的实参直接在函…

C++离航篇——内存的申请释放

1、内存的申请和释放 使用关键字new,紧接申请的类型,以及用中括号标明申请多大的内存空间。 2、内存的初始化 注意和块内存申请不同,初始化是(),块内存是[ ]。