
C++
文章平均质量分 85
森耶耶爱笑嘻
苟利...
展开
-
C++巩固与知新----头文件保护符
首先,我非常激动,又来了iteye论坛。看了看自己原来写的几篇博客,那都是2013年的事了,并没有坚持下来,当然,也给自己找了个借口,学习太忙了。现在稍微清闲一点,我觉得还是有写博客的必要了。 C++早在大一的时候就学过,前阵子为了考试也看过些许时间,但是,总的来说还是走马观花,现在重新研读《C++ PRIMER》一书,觉得获益匪浅,巩固中有知新。那么下面我就来探讨下几个有意思的...原创 2015-10-15 09:13:05 · 233 阅读 · 0 评论 -
openCV综合运用 ------- 检测三角形
今天主要是研究另一个比较综合的例子。上一个例子只是简单地检测两个平行直线的线段长度和平行线之间的距离,主要应用了直线细化、霍夫变换等主要手段,那么这一次,我们来对三角形进行处理,对于初学者来说,这样一个三角形图片是经典的: 那么问题来了: 1. 求该三角形的周长 2. 求该三角形的面积实际上这两个问题就是一...2015-11-08 12:07:24 · 5189 阅读 · 0 评论 -
openCV入门----霍夫变换检测圆
前面几次的内容,包括基础知识介绍和综合训练,基本上都是围绕着霍夫变换检测直线来进行展开的。那么这次我要来探讨霍夫变换检测圆。话不多说,首先我们来简要地看看霍夫变换检测圆是什么原理。霍夫变换检测圆的原理及其实现 前面的学习,让我对霍夫变换有了这样一种理解-----实际上就是坐标变换,是一种数学上的变换,然后再转换到参数坐标系进行讨论,最终确定待检测圆(或者其他形状)的数学...原创 2015-11-10 22:37:43 · 1218 阅读 · 0 评论 -
openCV入门----图像的几种变换方法
在PS、画图板等工具里,我们常常用到放大、缩小、扭曲、旋转等等的一些图像变换,那么这一次,我们使用openCV来实现以下图像常用的几种变换方法。 一、重映射 什么是重映射? 名字听上去是比较高端,但是实际上,它的原理很简单,就是将原图像通过一定的数学公式映射到另一幅图像中去,通俗点讲就是把一幅图像中某位置的元素放置到另一幅图像中的指定位置的这么一个方法。...原创 2015-11-12 22:24:48 · 339 阅读 · 0 评论 -
“愚蠢的四天”---QT与OpenCV的结合
长沙这阴暗的天气已经持续好几天了,我也在这见不到太阳的天空下混混沌沌地度过了艰难的四天。虽然我成功搞定了大学最后一个体侧,以后终于能坐在操场旁静静地看着人家跑步,但是,我却丝毫没有半点如释重负的感觉,取而代之的是一种“黑云压城城欲摧”的压迫感,我度过了“愚蠢”的四天,为啥呢?为啥呢?作为程序员来讲,你懂得。一定是太久没见到太阳了···· 这次想将openCV结合Q...原创 2015-11-17 09:44:18 · 426 阅读 · 0 评论 -
银行卡号识别(一) --- 预处理
受到微信钱包的启发,现在决心做一个类似的东东来玩一玩 -------------- 银行卡号识别 凡事要循序渐进,本次我们先来探讨静态银行卡号的识别,识别的方法有很多,那么在识别之前往往还有很多预处理的工作要做,接下来我将一一介绍。 目标图片 一、灰度图像 我们将图像导入后,往往是三通道的...2015-12-04 00:18:44 · 2935 阅读 · 0 评论 -
银行卡号识别(二) --- 再预处理
上回书说道,我们对银行卡进行了一系列的预处理后,得到了下面的结果: 银行卡下半部分严重影响到了检测的效果,所以在进行机器学习前,我们还需要做一点处理,把下半部分的噪声给消除掉。思路:首先,针对农行卡颜色的特点(目前暂时只讨论农行卡)上半部分颜色相对较浅,下半部分颜色较深,而银行卡号属深色,所以往往会出现上图所示的---下半部分大面积噪声,上半部分可能没有或者有细微的...2015-12-09 00:19:35 · 2204 阅读 · 0 评论 -
银行卡号识别(三) --- 基于k最近邻的数字识别测试
在进行完预处理之后,我们可以开始用算法识别数字了。首先我们不做那么复杂的、一连串银行卡数字的识别,而是做一个数字的测试。 一、机器算法的引入-----K近邻算法K最近邻(k-Nearest Neighbour,KNN)分类算法是一个理论上比较成熟的算法,也是最简单的机器学习算法之一。顾名思义,k最近邻实际上就是取和待分类物最相似的k个模板,然后这k个模板中所占比例最高的类别就是最后...2015-12-09 20:00:52 · 1565 阅读 · 3 评论 -
银行卡号识别(四) --- 基于k最近邻的银行卡提取及识别
一、提取方法的修正 上回说道,我们使用cvFindContours函数来找银行卡上的数字的外包矩形,从而从银行卡上将数字抠下来进行识别,但是,使用后会发现有如下两个问题: (1)不好筛选 提供的图片大小不一样,那么数字的外包矩形框的大小也就不一样,如果简单地采用面积的办法进行筛选,那么这种方法的适应性是非常的差的。 (2)外...原创 2015-12-13 15:37:51 · 1705 阅读 · 5 评论 -
OpenCV+SVM简单应用-------路面箭头分类
问题内容:路面箭头检测与识别(该部分主要介绍基于SVM的分类,也就是识别,检测问题暂不谈)问题背景:路面箭头识别在无人车中有着重要的作用: 1.车道线等重要信息的检测,需要排除路面箭头的干扰; 2.需要根据路面箭头的指示,完成下一步动作问题描述:为了简化这个问题,重点描述基于OpenCV的SVM路面箭头分类,我...原创 2016-12-12 14:49:27 · 2164 阅读 · 5 评论 -
openCV综合运用 ------- 图像细化、线段长度、平行线距离检测
在上述博客中,我分别对平滑滤波、边缘检测、直线检测做了一定程度的了解,那么最终的目的我们是需要解决实际问题,那么今天就试着完成一个简单的综合训练,来在巩固前面所学知识的同时,学到新的东西! 题目如下: 1.分别检测两线段的长度; 2.算出这两平行线之间...原创 2015-11-06 13:06:51 · 5884 阅读 · 0 评论 -
openCV入门----霍夫变换直线检测(CvHoughLine2的使用)
上回书说道,霍夫变换检测直线的原理,以及自己编程实现,那么今天我就来使用openCV里的函数来完成这个有意思的任务,看看能收获些什么呢? 前面我们利用openCV处理过平滑图像(高斯滤波)、边缘检测(canny算法),这些都是直接调用后可以直接得出图像的结果,然后显示出来,然而霍夫变换相对来说复杂一点点,它返回的结果是直线的参数,那么什么是直线的参数呢? ...原创 2015-11-04 23:41:51 · 1482 阅读 · 0 评论 -
openCV入门----霍夫变换直线检测(自写)
最近,跟一些朋友探讨了一下关于学习图像处理的一些问题,对于很多图像处理的问题,openCV都提供了相应的函数,那么我们还有必要自己再写一遍么?这个问题令我很头疼,估计令很多初学者都很头疼。你说不这么做吧,感觉有点点虚,毕竟用得是人家的东西,自己掌握的只是原理,或许有时候都不能拍着胸脯说自己懂这个算法了;这么做吧,当然可以更好的理解算法啦,但是,费的时间比较长,代价也是可想而知的...原创 2015-11-03 01:05:33 · 1927 阅读 · 0 评论 -
openCV入门----单窗口多图片显示
在通过图像显示入门之后,自然想到多图像单窗口显示如何实现,有时候往往要对比几幅图来加以对比,从而更直观地看到处理效果!在Matlab里就很容易做了,如果是显示多个曲线图,那么subplot函数秒秒钟帮你解决问题!但是C++中使用openCV函数,那可能得费一点功夫了! 话不多说,直接上代码!#include#include #include"windows.h"...2015-10-17 00:21:40 · 812 阅读 · 0 评论 -
C++巩固与知新----异常处理
异常处理1.throw表达式:错误检测部分使用这种表达式来说明遇到了不可处理的错误,可以说throw引发了异常条件。2.Try块:以try开始,以一个或者多个catch结束,对于try块中处理的代码抛出的异常,catch会进行处理。基本结构:try{//程序中抛出异常throw value;}catch(valuetype v){//例外处理程序段}<!--EndFragm...2015-10-17 11:51:01 · 212 阅读 · 0 评论 -
openCV入门----cvSetimageROI函数的使用
上一次介绍了多图像单窗口的使用,其中很重要甚至可以说是至关重要的一步就是cvSetimageROI函数以及其他函数配合使用的地方!代码如下(详细请参考“openCV入门----单窗口多图片显示”博客):cvSetImageROI(DispImage, cvRect(x, y, (int)(w / scale), (int)(h / scale)));// Resize the inp...2015-10-18 00:19:24 · 491 阅读 · 0 评论 -
openCV入门----.avi播放闪退、fopen、图像载入速度缓慢问题
虽然很多示例程序网上都有,然而自己进行编译运行时还是会出现很多意料之外的问题,接下来,我就把我遇到的比较头疼的(有解决了的有没有解决的)问题罗列如下: 1.程序播放.AVI程序时闪退(未解决)在显示图像之后,我尝试过播放.AVI文件,代码网上比比皆是,大多数都如出一辙。但是总是出现程序运行了窗口弹出后,显示了一帧图像就立马退出的问题!网上查找了相关问题的解决办法,大多查询到的是一下所...2015-10-18 11:27:41 · 490 阅读 · 0 评论 -
openCV学习笔记----高斯滤波基本概念及简单应用(一)
高斯滤波是图像平滑的一种重要的方式,能有效地消除和抑制噪声,达到图像平滑的效果。同时,相比于平均模板而言,效果更加自然。更加自然的意思,实际上说相对于就是适当地降低平滑后的模糊程度。平均模板对四周像素的使用是一视同仁的,这样的话整幅图处理后看上去就会非常的模糊;然而高斯滤波打破了这样的局限,分配以不同的权重,随着距离中心距离的增大,权重将迅速减小,从而确保中心的像素点看起来更像是接近...原创 2015-10-20 12:35:56 · 531 阅读 · 0 评论 -
openCV学习笔记----深入理解高斯滤波(二)
这一次,我将较为深入地探讨高斯滤波,包括参数的影响、参数的选取、高斯模板的形成以及自行编程实现高斯滤波的效果与openCV函数实现效果比对。 首先,我们接(一)中最后所述的内容继续开始探讨。在(一)中,我们最后探讨了一下关于高斯函数中的sigma的选取对于模板生成的影响和对滤波效果的影响,但是我在(一)中我未给详细地解释,这里我想比较通俗地并且具体地阐述一下这些影响的成因:...原创 2015-10-23 00:52:42 · 738 阅读 · 0 评论 -
openCV入门----边缘检测(一):基于一阶导数的梯度算子
首先要了解一下梯度的概念,在高等数学中,对于连续的二维函数f(x,y),其点在(x,y)处的梯度是一个二维列向量V = [f对x偏导数 f对y偏导数]’那么梯度的幅值就是 |V| = sqrt(f对x偏导数^2 + f对y偏导数^2)从而对于离散的二维离散的函数f(i,j),微分往往可以用差分表示,如下式: | V’| =...2015-10-26 10:36:16 · 2365 阅读 · 0 评论 -
openCV入门----边缘检测(二):拉普拉斯算子
上文简单讲述了一阶导数在边缘检测中的应用。而使用一阶导数进行边缘检测,往往会使得图像的细节丢失,那么此时,我们需要用到二阶导数来进行边缘检测,也就是拉普拉斯算子。 对于二维函数的导数求法如下: 可以近似如下: ...2015-10-26 11:16:37 · 1100 阅读 · 0 评论 -
openCV入门----边缘检测(三):canny算法
对于canny算法,这个应用非常广泛算法,我着实想不到什么很好的开场词来介绍它。那么就套用《Learning openCV》中文版中的一段好了: “在图像边缘检测中,抑制噪声和边缘精确定位是无法同时满足的,一些边缘检测算法通过平滑滤波去除噪声的同事,也增加了边缘定位的不确定性;而提高边缘检测算子对边缘的敏感性的同事,也提高了对噪声的敏感性。canny算子力求在抗噪声干...原创 2015-10-28 00:50:27 · 1176 阅读 · 0 评论 -
OpenCVforAndroid应用之银行卡号识别 ------ 搞定开发环境
前阵子的考试、旅游让我有很长一阵子没来博客看看,现在寒假了,是时候写点、看点新的东西了!前面我主要围绕着基于OpenCV的机器学习算法在图像识别处理上的应用来展开学习的,当然这些个技术(如银行卡号识别)最终都是要运用到实际生活中的。我们就拿银行卡号识别来说,大家用的最多的微信实际上就有了这个功能。大家打开微信钱包,绑定银行卡的时候是否在输入框右侧看到一个照相机一样的按钮呢,那就是实现银行卡...原创 2016-01-22 21:04:37 · 658 阅读 · 0 评论