18 caimouse

尚未进行身份认证

网名是caimouse

等级
TA的排名 25

在OpenCV里用kNN实现MNIST

KNN是非常简单的机器学习算法,并且在OpenCV库里实现这个算法,用户可以直接使用这个算法。在前面已经学习过这个算法的使用,在这里再次来学习一回,不过这里采用训练的数据不一样,它是采用MNIST的数据集来训练和测试。要下载这个数据来训练,可以从这个网站来下载:Yann LeCun's website,当下载完成之后,再解压之后,可以得到下面四个文件:从上图可以看到前面两个文件是测试文件,...

2020-02-08 19:48:55

在OpenCV里理解像素邻域

连通体的标识、像素领域和连通性像素邻域及其连通性的概念非常直观,如果将其定义形式化体验并知道其“确切”的含义很有意义。下面是你需要知道的关于图像中像素的邻域和连通性。什么是邻域邻域就是与指定像素相触碰到的像素集合,在2D图像里一般来说是有8个邻居像素,如下图:在上图里,像素p的邻居就有周围8个黄色的像素组成,也叫做8邻域。有时候感觉使用8个像素还是比较多,为了减少像素的计...

2020-01-14 10:26:04

在OpenCV里深入浅出地实现简单车道检测

前面学习过很多函数,也理解了这些函数的功能,现在通过一个综合的例子来回顾这些函数的作用,在这里介绍目前比较常见的无人驾驶中车道识别的例子。首先来看一下这引图片:从这张图片里可以看到车要行驶在黄线与虚白线之间,才能保持车在车道中间行驶。人眼进行观察很容易就知道在什么位置,而要在计算机里进行识别,就要比较麻烦,因为推理的算法目前还没有成熟,下面只做简单的识别算法,这种情况只能用来大体地进行...

2020-01-09 10:43:57

在OpenCV里用FastLineDetector直线检测

前面学习过霍夫直线,现在再来学习一种FastLineDetector的直线检测。为了比较快速,要先学习论文--《LSD: a Line Segment Detector》,这篇文章发表于PAMI2010。特别之处在于能快速检测图像中的线段,同时使用了错误控制的方法,使得检测结果比较准确。最后,LSD结果输出是线段的坐标与属性,比如起点,终点,线段的粗细。 首先,需要回顾一下...

2020-01-07 09:24:58

在OpenCV里用putText输出文本

OpenCV中除了提供绘制各种图形的函数外,还提供了一个特殊的绘制函数——在图像上绘制文字。这个函数即是putText(),不过这个函数不支持中文绘制显示,如果要中文显示必须自己实现图片的方式绘制,可以查看前面的文章,连接如下:https://blog.csdn.net/caimouse/article/details/102525550在这里先来看一下这个函数的定义:其中参...

2020-01-06 09:07:50

在OpenCV里用line画直线

前面使用过这个函数来画直线,现在来看一下这个函数的定义:其中参数定义:img 要画直线的图像;pt1 直线的起点坐标(x,y);pt2 直线的终点坐标(x,y);color 直线的颜色,(B,G,R);thickness 直线的精细;lineType 直线生成的算法;shift 直线坐标的固定浮点数的位数;这个函数比较简单,先来看一下演示代码的结果:...

2020-01-03 10:52:13

在OpenCV里用getTextSize计算文本字符串的宽度和高度

前面学习使用函数按需求来计算字体的缩放比例,但是很多情况下我们只想知道这串文字要占用多大的显示空间,别把别的东西盖住,或者文字之间相互重叠,说到底这个就是文字的排版功能了。因为OpenCV处理的东西就是图像,那么图像就是像素的显示,在普通应用程序里有操作系统的GUI来处理,但在OpenCV里是没有的,它是基于像素的,是最原始的方式。因此OpenCV里提供了一个函数getTextSize来计...

2020-01-02 10:39:27

在OpenCV里用getFontScaleFromHeight设置文字的大小

如果想在OpenCV里输出一些英语文字,如下图:这里看到输出文字的大小不一样,这需要怎么样来实现呢?由于OpenCV里所有显示的元素全是像素,那么文字也需要变换为图片才可以输出,因此这个字符的大小问题,就变成了图像变换问题了。幸好OpenCV已经提供了英文字符的输出大小的函数getFontScaleFromHeight,通过这个函数就可以计算你想输出字符的大小。接着来看一下get...

2019-12-31 11:10:21

为什么2019年这么拼命工作,却摆脱不了“穷”

进入社会后,年轻的人们一开始都是铆足干劲力争上游,但是结果却往往不尽人意,时间很容易会让你看清现实:社会里80%的财富掌握在20%的人手里。明明工作得很卖力了,很努力了,但是定的目标却没完成,赚钱也没赚够还得倒贴,小金库空空如也,整个人也心力憔悴,付出很多却成了瞎忙活。谈到赚钱这个话题,好像生活里人人都很焦虑,职场上事事也都让人头疼,不少人给自己2019的关键词是:忙。每天白天上班...

2019-12-31 08:45:24

在OpenCV里用fillPoly填充多边形

前面学习过fillConvexPoly函数,这个函数是用来填充凸多边形的,但在OpenCV里还添加了fillPoly函数,这个函数与fillConvexPoly函数有什么差别呢?一般来说,fillPoly函数可以填充任意形状的多边形,并且可以填充多个图形,但是速度比较慢。而fillConvexPoly函数反之,只能一次填充一个图形,并且凸多边形,速度比较快。下面来看一下函数定义:其中参...

2019-12-30 17:11:09

在OpenCV里用fillConvexPoly填充凸多边形

要理解这个函数,先来看一下什么是凸多边形,它的定义如下:多边形(Polygon): 由三条以上的直线所组成的形状为多边形。凸多边形(Convex Polygon):每个内角(Interior Angle)都是锐角(Acute Angle)或钝角(Obtuse Angle),也就是没有大于180°的优角(Reflexive Angle)的多边形。凹多边形(Concave Polygon)...

2019-12-30 15:35:22

在OpenCV里用ellipse2Poly生成椭圆近似线段

前面学习过使用ellipse函数来绘制椭圆,如果你并不需要这么真实的椭圆曲线,那么就可以使用ellipse2Poly函数。因为这个函数可以从椭圆里根据需要的角度来生成近似的椭圆线段。这个函数的定义如下:其中参数:center 椭圆的中心点坐标;axes 椭圆的长短轴的大小;angle 椭圆第一个轴与X轴方向的夹角,顺时针方向;arcStart 椭圆弧开始的角度;arcE...

2019-12-27 16:30:46

在OpenCV里用ellipse画椭圆形

在OpenCV里绘制椭圆,需要使用到ellipse函数,这个函数在这里是比较复杂的参数,要一下子了解它是不容易的事情,先来看一下OpenCV里是怎么样定义它的,如下图:从上面函数可以看到,在这里参数非常多,要理解每一个函数的作用,需要熟悉下面的示意图:这个函数不仅可以绘制椭圆,还可以绘一段椭圆弧,或者椭圆扇区。从上图可以看到img是要绘制图像,center是椭圆的中心点,axes是...

2019-12-27 10:22:23

在OpenCV里用drawMarker画标记符号

在人工智能的例子里,经常会做一些报告,而报告时需要把图上的细节地方标记出来,在画图的软件里,可以使用软件定义的图标来标记。如果在OpenCV里动态演示的例子,就用不上画图软件的功能了,这时就需要使用OpenCV提供的标记功能,它就是由函数drawMarker提供的,它主要提供了下面类型的图案:从上图可以看到提供了七种标记的图案,具体需要使用哪一个图案,就看自己的需要了。那么怎么样来绘...

2019-12-26 11:44:18

在OpenCV里用drawContours画轮廓

在OpenCV里,找到物体的轮廓是最常用的功能,为什么这样说呢?因为太多的应用要使用这个功能了,比如数物体的个数,在种子实验室里常常要使用计算种子的个数,这时就需要拍照种子的照片,然后根据照片来数出种子的个数,以便以后计算种子的发芽率。又比如农业上的应用,大家都喜欢吃虾,但是虾苗的培育是需要很高的技术,所以养成年虾和虾苗的农户就不一样了。在买卖虾苗的过程中,由于虾苗的个头比较小,需要大量人工来数虾...

2019-12-25 10:48:25

在OpenCV里用clipLine裁剪直线段

如果你学习过图形学,就会对这个裁剪算法有深入的了解,比如Sutherland–Cohen算法大体的意思如下:第一步,判定:1) 完全在窗口内的直线段,称为完全可见的线段,如AB。保留着2) 完全在窗口外的线段,称为完全不可见线段,如CD。抛弃掉第二步,处理不能断定为完全可见或完全不可见的线段,如IJ、KL*这时需要计算出直线段和窗口边界的一个交点,这个交点把直线分成两...

2019-12-24 15:55:52

在OpenCV里用circle画圆图形

在OpenCV提供了一个画圆的函数circle,这个函数比较简单,先来看一下这个函数的定义:img为要画的图像;center为画圆的圆心坐标;radius为圆的半径;color为设定圆的颜色,规则根据B(蓝)G(绿)R(红)顺序排列;thickness 如果是正数,表示组成圆的线条的粗细程度。否则-1,表示圆是否被填充;line_type 线条的类型,默认是8;sh...

2019-12-24 10:06:32

在OpenCV里用arrowedLine画箭头图形

经常使用OpenCV来做项目,就发现有更多的需求,比如像下图中使用箭头来指示:看到白色的箭头来标记目标物体,这样才会让大家看东西更加具体化,更加形象化,特别用在教育领域,想让学生看到目标区域,使用箭头更是比比皆是,从细节上就让别人放心。那么接着的问题就来了,怎么样在OpenCV里实现这个箭头显示呢?是加载一个图片进行贴上去?其实不用这么复杂,在OpenCV里已经考虑到大家的需求,已经实现了...

2019-12-23 17:02:42

在OpenCV里用polylines画多边形

在OpenCV进行图像处理时,有时候需要标记一些多边形物体,那么就需要使用函数polylines来画出来。先来看看这个函数polylines画出来的图,如下:要深入地应用这个函数,我们得把这个函数的参数研究明白才可以灵活运用,因此来看一下这个函数的参数:在这个函数使用的参数很多,一眼看上去,就会有点害怕。不过仔细地分析和了解之后,就可以根据需要来设置每一个参数。这个函数的...

2019-12-23 11:48:10

在OpenCV里玩贪吃蛇

前段时间有一个大学生问我,学习OpenCV过程中,看代码都提不起兴趣,没有学习的动力,有没有什么方法既可以好玩,又能学习到知识。我一直在思考这个问题,在寻找好玩的方式,第一个想到就是游戏了。好吧,今天就来开发一个简单的游戏:贪吃蛇,不但很好玩,还可以学习到OpenCV的概念和函数的应用,以及学会键盘交互应用的过程。游戏的实现过程,其实就是不断地更新屏幕显示,让每一帧数据产生变化,也就是有...

2019-12-20 11:37:42

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。