opencv
文章平均质量分 93
山在岭就在
天道酬勤
展开
-
浅谈Openv中人脸识别类FaceRecognizer
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 opencv2.4版本中封装了可用于人脸识别的类FaceRecognizer,其对应代码在动态链接库opencv_contrib249d.dll中(我用的是opencv2.4.9版本),这个动态链接库在opencv安装目录下可以找到,要想使用FaceRecognizer,首先要保证上述动态链接库正确配置。在此...原创 2014-08-15 17:25:16 · 29339 阅读 · 8 评论 -
C++开发人脸性别识别教程(6)——通过SVM实现性别识别
上一篇教程中我们介绍了如何使用OpenCv封装的FaceRecognizer类实现简单的人脸性别识别,这里我们为大家提供另外一种基本的性别识别手段——支持向量机(SVM)。 支持向量机在解决二分类问题方面有着强大的威力(当然也可以解决多分类问题),性别识别是典型的二分类模式识别问题,因此很适合用SVM进行处理,同时OpenCv又对SVM进行了很好的封装,调用非常方便,因此我们在这个性别识原创 2016-01-08 09:37:21 · 15238 阅读 · 17 评论 -
C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制
在之前的博客中我们已经将项目中用到的算法表述完毕,包括人脸检测算法以及四种性别识别算法,在这篇博客中我们将着手搭建基本的MFC框架。 一、框架概况 在这篇博文中我们将搭建最基本的MFC框架,绘制MFC界面。 二、搭建流程 1、新建一个MFC工程并配置OpenCv 打开VS,按下“ctrl+n”,在新建窗口中选择“MFC应用程序”,命名为Gender原创 2016-01-08 19:43:03 · 7515 阅读 · 0 评论 -
C++开发人脸性别识别教程(8)——搭建MFC框架之读取文件夹信息
在上一篇博客中我们已经绘制了MFC界面,在这篇博客中我们将添加响应代码,为MFC框架添加一个最基本的功能:打开一个文件夹。 一、添加相关头文件 这里头文件主要包含三类:opencv头文件、批量读取文件相关的头文件、CvvImage。这里需要强调CvvImage这个头文件,这个是用来关联OpenCv和picture控件,并且这个头文件是隶属于OpenCv1.x的,在2.x版本中已原创 2016-01-09 12:50:54 · 7953 阅读 · 42 评论 -
C++开发人脸性别识别教程(10)——添加图片的人脸检测程序
如今我们的MFC框架已经初具规模,能够读取并显示文件夹下的图片,在这篇博文中我们将向其中添加人脸检测的程序。 一、人脸检测算法 这里我们使用OpenCv封装的Adaboost方法来进行人脸检测,参见:C++开发人脸性别识别教程(4)——OpenCv的人脸检测函数 二、初始化 1、添加初始化按钮 在进行人脸检测之前需要初始化一些相关变量,例如开辟内存,加载检测器等等。首先,我们为MFC框架原创 2016-01-12 22:06:01 · 6328 阅读 · 7 评论 -
C++开发人脸性别识别总结
历时一个月,终于在昨天把《C++开发人脸性别识别总结》系列博客完成了,第一篇博客发表在2015年12月29日,截止昨天2016年2月29日最后一篇完成,去除中间一个月的寒假,正好一个月,首先这里把这系列博客的地址呈上:C++开发人脸性别识别教程。 在发牢骚之前首先强调几个重要问题: (1)在程序中存在一个小的易触发的BUG,就是”初始化“按钮对应的事件触发函数OnBnClickedButt...原创 2016-03-01 20:40:36 · 7898 阅读 · 5 评论 -
C++开发人脸性别识别教程(11)——图片人脸检测程序BUG处理
在这篇博客需要解决之前遗留的两个BUG,一是用户在不初始化条件下运行程序,二是人脸检测的误差结果。 一、添加初始化警告 目前我们在“初始化”按钮对应的响应函数中封装了人脸分类器加载、开辟内存等操作: 因此,如果用户在未单击“初始化”按钮的情况下进行图片读入,人脸检测,程序就会因为缺少人脸检测器而崩溃,因此我们向CGenderRecognitionMFCDlg类中添加一个布尔类型的标志位用于指原创 2016-01-13 22:02:16 · 4148 阅读 · 1 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(2)——代码试运行
在这篇博客中主要是对tiny_cnn的工程代码进行调试运行,毕竟目前对于我来说这是一个相对陌生的代码文件,拿到手里首先想到的自然是检验一下这个代码的正确性,能够顺利运行得到预期的结果之后,再开始对代码进行深度的剖析。 一、现在tiny_cnn 在上一篇博客中已经提供了项目下载地址,这里只需下载之后再解压,得到如下文件: 项目文件中主要包含代码和训练样本两部分,data文件夹中存放了测试程...原创 2016-03-10 21:53:52 · 26454 阅读 · 56 评论 -
一种批量读取文件的方法—CSV文件
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 在C语言编程中经常遇到一个问题:如何批量读取一个目录下某一类型的所有文件,例如图像文件。最近在研究图像模式分类问题,经常需要对某一种分类器进行训练,在训练过程中需要遍历某一文件夹下的几百甚至几千张图片样本,如何用程序完成这个遍历工作,实在是一个问题,在此对其中的一种解决办法——CSV文件读取方法,进行详细介...原创 2014-08-15 17:28:52 · 13067 阅读 · 7 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(1)——开篇
在之前完成了《C++开发人脸性别识别教程》系列博客的编写之后,我开始将工作重点转移到与我的研究生课题关联更为密切的深度学习上来。深度学习编程有几个经典的框架,首屈一指的当属Caffe,然后还有Matlab环境下的MatConvNet工具箱。有关这两个深度学习框架的资料网络上有很多,这里不再过多介绍。而我这里选择用github上的另外一个简洁的纯C++深度学习框架——Tiny_cnn。 首先将...原创 2016-03-09 21:42:20 · 29529 阅读 · 7 评论 -
C++开发人脸性别识别教程(15)——搭建MFC框架启动摄像头
在之前的博文中已经完成了针对图片的人脸性别识别功能,在这篇文章中我们开始引入摄像头设备,为程序添加第二个功能:视频人脸性别识别。 一、添加控件 这里需要新添加两个与视频人脸性别识别相关的功能控件,一个是“打开视频”按钮(ID为IDC_OpenVideo),一个是“暂停按钮”按钮。为了适当减少主窗口中的按钮控件的数量,这里再次采用一种复用策略,即将视频识别模式中的“暂停”功能与之前图片文件夹...原创 2016-02-27 09:19:31 · 7058 阅读 · 12 评论 -
C++开发人脸性别识别教程(16)——视频人脸性别识别
在之前的博文中我们已经能够顺利驱动摄像头来采集源图像,在这篇博文中将正式为其加入性别识别的代码,实现摄像头视频的人脸性别识别。 一、人脸检测 在得到摄像头采集的源图像之后,首先要做的就是对其进行人脸检测,将人脸区域分割出来。这步相对来说比较简单,只需在定时器时间触发函数中加入人脸检测的代码即可,这里给出OnTimer()函数的整体代码:void CGenderRecognitionMFCD...原创 2016-02-27 22:10:21 · 7890 阅读 · 11 评论 -
C++开发人脸性别识别教程(17)——辅助功能之人脸批量分割
在之前的博文中已经将性别识别部分叙述的基本完整,整个程序的开发也接近尾声,在这篇博文中我们再为程序添加小的辅助功能:人脸批量分割。 一、人脸批量分割 在前面的博文中提到过,进行性别识别训练所用到的训练样本是分割好的男性人脸样本和女性人脸样本,那么如何去制作这些训练样本呢?这就需要进行人脸图像的批量人脸分割。 1.1 添加控件 首先添加一个“人脸批量分割”的按钮,ID采用默认值即可: ...原创 2016-02-29 15:03:30 · 4861 阅读 · 2 评论 -
C++开发人脸性别识别教程(18)——辅助功能之文件名批量修改、方法验证
时光推移了30多天,这个人脸性别识别的小项目也接近尾声了,预计再通过三篇博文的篇幅来完成这个项目的收尾工作。在这篇博文中我们再为程序添加另外两个小的辅助功能:文件名批量修改、方法验证。 一 文件名批量修改 批量修改文件名是一件很基础也很常用的小操作,核心操作就是图像文件的批量读取、批量改名、批量保存。基本思想就是把文件读出来,然后在保存回去(注意不要和别的文件发生覆盖),从这个角度来讲文件...原创 2016-02-29 20:16:14 · 3924 阅读 · 2 评论 -
opencv中image watch插件安装使用教程
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 Image Watch(下载)是OpenCV的一款最新工具,它能够即时显示出矩阵的内容,即memory中Mat的信息,方便程序的调试,非常好用。不过目前该插件只支持VS2012,而且不能保存调试信息。 下载地址:点击打开链接 安装方法: 1 从以上网址下载插件,下载后得到一个ImageWatch.vsix...原创 2015-01-14 15:42:11 · 15594 阅读 · 7 评论 -
C++开发人脸性别识别教程(4)——OpenCv的人脸检测函数
这个项目主要包含三部分:人脸检测、特征提取、性别分类: 这篇博客中我们重点介绍OpenCv的人脸检测函数。这篇博客我们先不提MFC,而是在win32控制台下编写一段人脸检测的程序。 一、开启摄像头 我们先讲解如何通过摄像头来采集图像,这听起来更有实际意义。 1、新建工程并配置OpenCv(注意工程类型选择win32控制台应用程序):原创 2015-12-31 09:35:15 · 18102 阅读 · 33 评论 -
C++开发人脸性别识别教程(5)——通过FaceRecognizer类实现性别识别
在之前的博客中已经解决了人脸检测的问题,我们计划在这篇博客中介绍人脸识别、性别识别方面的相关实现方法。 其实性别识别和人脸识别本质上是相似的,因为这里只是一个简单的MFC开发,主要工作并不在算法研究上,因此我们直接将性别识别视为一种特殊的人脸识别模式。人脸识别可能需要分为几十甚至上百个类(因为有几十甚至上百个人),而性别识别则是一种特殊的人脸识别——只有两个类。 一、基本工具原创 2016-01-04 22:11:55 · 17630 阅读 · 29 评论 -
稀疏表示中压缩感知库Kl1p的配置方法
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 1 浅谈稀疏表示和压缩感知写这篇博客是应为需要用稀疏表示做人脸识别(当时还没有做完,效果也还不清楚),要求用C++实现,理所应当想到应该借用opencv这个开源工具,可惜发现仅仅opencv还是不够,需要用到压缩感知,详见:http://blog.csdn.net/hechenghai/article/detail...原创 2015-03-23 17:38:10 · 4069 阅读 · 6 评论 -
一种批量读取文件的方法——SHBrowseForFolder
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 在编程过程中,经常涉及到对某一个文件夹下的文件进行批量操作,尤其是在图像处理过程中,需要通过大量样本来进行分类器的训练,因此涉及到图片文件批量读取的问题。在之前的博客中介绍过一种基于csv文件的批量读取方法,在此介绍另外一种方法即SHBrowseForFolder方法,它是MFC框架编程中常用的一种批量文件读取方法...原创 2014-09-08 18:28:36 · 4712 阅读 · 1 评论 -
opencv2提取图像LBP特征代码详解
转自博客园:LBP特征提取转载 2015-04-15 08:46:02 · 6717 阅读 · 0 评论 -
opencv中SVM的那些事
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 最近在搞人脸性别识别,用到了opencv中封装的SVM分类器,遇到了一些小问题,解决之后感觉对其理解更深一点了,总结下。首先,理解下SVM得输入格式。SVM的train()函数主要包含两个输入数据:训练数据矩阵以及对应标签组成的矩阵。其中训练数据为行向量,标签矩阵为列向量。举个例子吧,比如在实验里一共用到300张图...原创 2015-04-18 15:00:05 · 2841 阅读 · 0 评论 -
MFC中picture控件坐标转换
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 opencv在MFC框架下应用时,不可避免要用到picture控件显示图片,但picture控件显示图片的基本单位是屏幕坐标系,如果需要获取像素坐标系,只需要进行一步简单的转换即可。当然如果是opencv2.0及以上版本,则需要用到CvvImage这个类,网上可以下载到。坐标转换的核心思想就是根据picture空间...原创 2015-04-07 17:40:02 · 3145 阅读 · 0 评论 -
关于Opencv实现人脸检测的阐述
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 关于Opencv实现人脸检测的阐述最近用Opencv开发一个人脸检测的小程序,结构并不复杂,但对于Opencv初学者来说还是具有一定的引导意义。接下来对于程序开发中出现的一些问题进行简单讨论。一、图像采集。图像既可以从摄像头设备中读取,也可以从磁盘中加载,两者方法大同小异。以摄像头为例,Opencv对于摄像头的操作...原创 2014-07-26 14:49:50 · 3966 阅读 · 4 评论 -
C++开发人脸性别识别教程(12)——添加性别识别功能
经过之前几篇博客的讲解,我们已经成功搭建了MFC应用框架,并实现了基本的图像显示和人脸检测程序,在这篇博文中我们要向其中添加性别识别代码。 关于性别识别,之前已经专门拿出两篇博客的篇幅来进行讲解,这里不再赘述,具体参见:C++开发人脸性别识别教程(5)——通过FaceRecognizer类实现性别识别和C++开发人脸性别识别教程(6)——通过SVM实现性别识别。 一、分类器训练 在进行人...原创 2016-01-17 11:24:17 · 6242 阅读 · 0 评论 -
C++开发人脸性别识别教程(1)——前瞻
大四暑假的时候,帮老师指导了一个本科大学生创新实验,主要目标是通过图像处理相关技术对人脸美丽度进行分类。其中一个很重要的环节就是人脸的性别识别,这里将这个部分单独拿出来,借住OpenCv这个开源的图像处理库,在MFC框架下编写了一个人脸性别识别的程序,本套教程将详细介绍编写过程。 需要提前说的一点是这个程序是在大四的时候编写的,当时自己还没有正式的进行图像处理方面的研究,编程经验也不够丰原创 2015-12-30 11:15:30 · 12152 阅读 · 0 评论 -
C++开发人脸性别识别教程(9)——搭建MFC框架之显示图片
在之前的博客中我们已经实现读取用户选定的文件夹,并将其路径保存在相应的变量中,在这篇博文中我们将介绍如何借助CvvImage类将图片显示在picture控件中,并自动读取文件夹下的其他图片。 一、添加“下一张”按钮 由于我们需要读取文件夹下的所有图像文件,而非某一张文件,因此有必要添加一个按钮来进行控制,具体功能就是:每单击一次这个按钮,程序就会自动读取下一张图片并显示在界面上。由于之前已经详原创 2016-01-11 21:41:18 · 11573 阅读 · 44 评论 -
C++开发人脸性别识别教程(2)——VisualStudio初探
上一篇教程中已经大致描述了项目的最终效果,考虑到读者中有很多零基础的同学,我们这里并不急于进行代码的编写,而是先简要介绍下所用到的开发工具——VisualStudio2012。 VisualStudio是微软推出的非常强大的开发软件,在C++开发领域可谓占据了半壁江山。VisualStudio经典版本主要有2005、2008、2010、2012、2013、2015等版本。2005和2008现原创 2015-12-30 15:15:43 · 8833 阅读 · 1 评论 -
C++开发人脸性别识别教程(3)——OpenCv配置和ImageWatch插件介绍
OpenCv是C++图像处理的重要工具,这个人脸性别识别的项目就是借助OpenCv进行开发的。虽然网上已经有了很多关于OpenCv的配置教程,但出于教程完整性考虑,这里还是用专门的一篇博客来介绍OpenCv的具体配置方法,同时也介绍一下OpenCv中的一个强有力的图像处理插件——ImageWatch。 由于这个程序是一年前写的,当时的OpenCv的最新版本为2.4.9(现在已经更新到了3.0原创 2015-12-30 15:46:19 · 12207 阅读 · 8 评论 -
C++开发人脸性别识别教程(13)——针对单张图片的性别识别
在之前的博文中我们的性别识别程序已经初步成型,能够识别某个文件夹下的图片文件。不过这里有一个问题,假设这个文件夹下有着大量的图片,而我们希望识别这些图片中的某一张,此时需要我们不停的单击“下一张”按钮才会轮询到对应的图片,这是相当麻烦的,因此在这篇博客中我们向程序中添加一个功能——单张图片的性别识别。 一、基本思想 最基本的办法就是在主界面再添加一个按钮控件,命名为“图片文件”(之前的按钮...原创 2016-01-18 21:46:10 · 5177 阅读 · 0 评论 -
C++开发人脸性别识别教程(14)——灰度图像识别BUG处理
在这篇博客中,我们对目前程序中一个隐藏很深的BUG进行处理,这个BUG导致程序目前有一部分逻辑出现错误(虽然没有表现出来)。 一、触发BUG 1、准备触发样本 为了复现这个隐藏的BUG,需要实现准备两张测试样本,一张是彩色图(三通道图),一张是灰度图(单通道图): 临时读入这两个图像,验证其属性: 注意此时程序能够正常读取这两个图片,不会崩溃。 2、修改代码,触发BUG 解析来我...原创 2016-01-20 21:27:57 · 5044 阅读 · 2 评论 -
C++开发人脸性别识别教程(19)——界面美化
在这篇博文中将完成《C++开发人脸性别识别》的收尾工作,主要内容分为两部分:添加视频暂定功能、界面规范化。 一 视频暂停功能 严格来说这个视频暂定功能算是视频人脸性别识别的一个遗留问题,本应加在C++开发人脸性别识别教程(16)——视频人脸性别识别这篇博文中,这里将其补上,具体功能就是在对摄像头采集的视频进行人脸检测、性别识别时,能够通过一个“暂停”按钮来对程序进行控制,实现程序的开始和中...原创 2016-02-29 21:29:59 · 5457 阅读 · 7 评论