自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大坡3D软件开发

自主操作系统和CPU--用软件来改变世界

原创 老蔡学堂

优惠大卖,全部课程(任选5门)一口价:49元,需要请发送邮件:9073204@qq.com 玩转人工智能库-深入浅出OpenCVhttps://edu.csdn.net/course/detail/26616 单片机编译器之链接器 https://edu.csdn.net/course/de...

2016-06-24 07:13:24

阅读数 9069

评论数 0

原创 在OpenCV里理解像素邻域

连通体的标识、像素领域和连通性 像素邻域及其连通性的概念非常直观,如果将其定义形式化体验并知道其“确切”的含义很有意义。下面是你需要知道的关于图像中像素的邻域和连通性。 什么是邻域 邻域就是与指定像素相触碰到的像素集合,在2D图像里一般来说是有8个邻居像素,如下图: 在上图里,像素...

2020-01-14 10:26:04

阅读数 154

评论数 0

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

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

2020-01-09 10:43:57

阅读数 2477

评论数 0

原创 在OpenCV里用FastLineDetector直线检测

前面学习过霍夫直线,现在再来学习一种FastLineDetector的直线检测。 为了比较快速,要先学习论文--《LSD: a Line Segment Detector》,这篇文章发表于PAMI2010。特别之处在于能快速检测图像中的线段,同时使用了错误控制的方法,使得检测结果比较准确。最...

2020-01-07 09:24:58

阅读数 467

评论数 0

原创 在OpenCV里用putText输出文本

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

2020-01-06 09:07:50

阅读数 432

评论数 0

原创 在OpenCV里用line画直线

前面使用过这个函数来画直线,现在来看一下这个函数的定义: 其中参数定义: img 要画直线的图像; pt1 直线的起点坐标(x,y); pt2 直线的终点坐标(x,y); color 直线的颜色,(B,G,R); thickness 直线的精细; lineType 直线生成的算法...

2020-01-03 10:52:13

阅读数 606

评论数 0

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

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

2020-01-02 10:39:27

阅读数 439

评论数 0

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

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

2019-12-31 11:10:21

阅读数 446

评论数 0

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

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

2019-12-31 08:45:24

阅读数 2035

评论数 6

原创 在OpenCV里用fillPoly填充多边形

前面学习过fillConvexPoly函数,这个函数是用来填充凸多边形的,但在OpenCV里还添加了fillPoly函数,这个函数与fillConvexPoly函数有什么差别呢?一般来说,fillPoly函数可以填充任意形状的多边形,并且可以填充多个图形,但是速度比较慢。而fillConvexPo...

2019-12-30 17:11:09

阅读数 291

评论数 0

原创 在OpenCV里用fillConvexPoly填充凸多边形

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

2019-12-30 15:35:22

阅读数 305

评论数 1

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

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

2019-12-27 16:30:46

阅读数 277

评论数 0

原创 在OpenCV里用ellipse画椭圆形

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

2019-12-27 10:22:23

阅读数 171

评论数 0

原创 在OpenCV里用drawMarker画标记符号

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

2019-12-26 11:44:18

阅读数 159

评论数 0

原创 在OpenCV里用drawContours画轮廓

在OpenCV里,找到物体的轮廓是最常用的功能,为什么这样说呢?因为太多的应用要使用这个功能了,比如数物体的个数,在种子实验室里常常要使用计算种子的个数,这时就需要拍照种子的照片,然后根据照片来数出种子的个数,以便以后计算种子的发芽率。又比如农业上的应用,大家都喜欢吃虾,但是虾苗的培育是需要很高的...

2019-12-25 10:48:25

阅读数 304

评论数 2

原创 在OpenCV里用clipLine裁剪直线段

如果你学习过图形学,就会对这个裁剪算法有深入的了解,比如Sutherland–Cohen算法大体的意思如下: 第一步,判定: 1) 完全在窗口内的直线段,称为完全可见的线段,如AB。保留着 2) 完全在窗口外的线段,称为完全不可见线段,如CD。抛弃掉 第二步,处理不能断定为完全可见...

2019-12-24 15:55:52

阅读数 187

评论数 2

原创 在OpenCV里用circle画圆图形

在OpenCV提供了一个画圆的函数circle,这个函数比较简单,先来看一下这个函数的定义: img为要画的图像; center为画圆的圆心坐标; radius为圆的半径; color为设定圆的颜色,规则根据B(蓝)G(绿)R(红)顺序排列; thickness 如果是正数,表示组成...

2019-12-24 10:06:32

阅读数 175

评论数 0

原创 在OpenCV里用arrowedLine画箭头图形

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

2019-12-23 17:02:42

阅读数 133

评论数 0

原创 在OpenCV里用polylines画多边形

在OpenCV进行图像处理时,有时候需要标记一些多边形物体,那么就需要使用函数polylines来画出来。先来看看这个函数polylines画出来的图,如下: 要深入地应用这个函数,我们得把这个函数的参数研究明白才可以灵活运用,因此来看一下这个函数的参数: 在这个函数使用的参数...

2019-12-23 11:48:10

阅读数 101

评论数 0

原创 在OpenCV里玩贪吃蛇

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

2019-12-20 11:37:42

阅读数 1014

评论数 0

原创 在OpenCV里实现复印件校正和切边

有一天早上,张三刚上班,冲了一杯茶,正回到工作电脑前,他的老板就匆匆地走过来,让他赶紧打开昨晚2点发送过来的邮件,这个邮件是客户发送过来的。客户提出了下面这样一个需求: 把上面这个文件进行校正,并保存为新的文件。原来张三的公司是开发复印机,一般情况下,普通的复印机都是要求人们把复印的文件按照...

2019-12-19 10:21:13

阅读数 174

评论数 0

原创 在OpenCV里实现扑克牌识别3

在前面使用两个图像相减的差值来识别,在识别的结果里,发现有时候识别错误率很高,那么就需要想办法来改善这种情况。首先来分析一下,为什么图像相减识别的错误率会这么高?如果仔细地分析它们的相减之后的图片,就会发现这样一个问题,当拍摄的扑克牌与库里的牌有角度的差异时,投影变换回来的图像,它们之间显然有像素...

2019-12-18 10:14:39

阅读数 890

评论数 0

原创 在OpenCV里实现扑克牌识别2

要对扑克牌的识别,前面只是对每一个牌做了标记,这样提供了一个识别的基础,也就是识别的知识库。要把新拍摄进来的牌进行识别,比如像下图: 在这里看到一下子拍摄到四张牌,目标是把这四张牌识别出来,那么需要怎么样做呢?其实可以根据前面的内容,同样把这四张牌分割开来,这是第一步。接着把分离出来的牌到前...

2019-12-17 09:37:39

阅读数 134

评论数 0

原创 在OpenCV里实现扑克牌识别1

扑克牌的游戏非常多,相信大家在大学里会经常玩的一种游戏,因为它简单,携带非常方向,放入到口袋里不占地方。并且它的玩法也是多种多样,比如24点,升级,斗地主等等。 当你跟朋友在玩24点游戏时,就是比较谁计算出来最快。但是有一些人想用聪明的办法,比如通过摄像头拍摄扑克牌,然后自动地在后台计算,然...

2019-12-13 14:12:41

阅读数 205

评论数 0

原创 在OpenCV里使用最简单方法实现二维码识别

现在二维码已经非常流行,每天必用的场景了。比如上班坐地铁,就可以使用用二维扫描坐地铁。如果坐公交车,也可以使用二维码进行支付。吃早餐也可以进行二维码支付,日常生活已经很难脱离二维码进行生活了。那么在越来越多的地方,也会大大地推广二维码,比如工业领域里,也会使用它。那么对于开发人员来说,学习会识别二...

2019-12-12 11:00:22

阅读数 142

评论数 0

原创 《Fluent Python》读书笔记-1.8 函数

函数是一个对象 def fun(n): '''注释''' return 1 if n < 2 else n * fun(n-1) print(fun(42)) print(fun.__doc__) print(t...

2019-12-06 16:17:01

阅读数 49

评论数 0

原创 《Fluent Python》读书笔记-1.6 字典

字典类型dict在一般用户程序里不是常常使用到的,但是它提供的功能是时时刻刻在使用着,因此python里对它作了很大的优化,采用hash算法来实现。 python提供映射的抽象基类:collections.abc.Mapping,而字典就是继承这个抽象基类,可以使用下面的代码来判断: from...

2019-12-06 14:39:44

阅读数 33

评论数 0

原创 《Fluent Python》读书笔记-1.5 bisect二分查找算法

对于一个有序队列进行查找和插入,最好的方法是二分查找算法。在python的bisect模块就提供了这样的功能,bisect.bisect(a, x, lo=0, hi=len(a))提供了查找插入位置,bisect.insort(a, x, lo=0, hi=len(a))提供了插入元素到列表。 ...

2019-12-06 10:29:11

阅读数 45

评论数 0

原创 《Fluent Python》读书笔记-1.4 产生表达式

前面使用列表解释非常强大了,那么又为什么要引入产生表达式呢?如果仔细地看一下前面的解释表达式,它会把每一项值都计算出来,如果只是项数比较少时,或许是比较好的方式。如果需要访问的数据量有几万,几百万项,那么每一项计算出来是需要很多时间,同时也需要占用很多内存。毕竟内存是一台电脑有限的资源,如果数量用...

2019-12-05 17:43:59

阅读数 41

评论数 0

原创 《Fluent Python》读书笔记-1.3 内置序列容器

在python内置了很多序列容器,并且是采用C语言实现,如果按保存不同的数据类型来分,可以分为两类: 一类元素可以不同数据类型的容器:list,tuple, collection.deque 一类元素只能同一样数据类型的容器:str,bytes,bytearray,memoryview,arr...

2019-12-05 12:02:39

阅读数 41

评论数 0

原创 《Fluent Python》读书笔记-1.2 Python数学模型

Python提供内置的数据模型,并且尽可能地使得内置的函数和功能,因为这样速度会更快,除非有必要,否则不要实现自己的特别函数,因为内置的函数是基于C代码进行优化的。 好处 拥有和 Python 内建类型一致的 API (len) 获得 Python 特性:切片,迭代 获得 Python 标...

2019-12-05 10:41:16

阅读数 34

评论数 0

原创 《Fluent Python》读书笔记-1.1 Python数据模型

Python提供了一个完善的数据模型,只有符合这个数据模型才可以更方便地进行开发,才能尽可能地提升开发效率。下面就来演示两个简单的功能,Python Data Model 为自定义的数据类型(通过 Class)提供与 Python 内建类型一致的接口。实现方法是:在类中定义一些特殊的方法,比如 _...

2019-12-05 09:30:08

阅读数 39

评论数 0

原创 显示方程的图像,判断是否有极值

昨晚女儿正在家里做作业,看到她正为一道题苦思不得其解,也画不出来图形来。我只好使用python来帮她,把这个函数的图形画出来给她,所以就写了下面的代码,让她看到之后,就有思考的方向了。显然比手工画图快很多,代码如下: import numpy as np import scipy as sp ...

2019-12-04 08:17:23

阅读数 36

评论数 0

原创 运行软件打不开,报“应用程序无法正常启动(0xc0150002)”的错误

出现这个问题,查看Windows的事件管理器,提示如下内容: “D:\work\ControlCAN.dll”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.MFC,processorArchitecture="x86",publicKeyToken=...

2019-12-02 16:01:12

阅读数 63

评论数 0

原创 在OpenCV里实现条码区域识别

在我们识别条码的过程里,首先要找到条码所在的区域,那么怎么样来找到这个条码的区域呢?如果仔细地观察条码,会发现条码有一个特性,就是水平的梯度和垂值的梯度会不一样,如果进行相减,会发现差值比较大。如果其它位置的图像一般不会这样。利用这个特性,就可以把条码所在区域求出来。 演示的代码如下: #p...

2019-12-02 08:05:08

阅读数 135

评论数 0

原创 在OpenCV里实现条码识别

现在条码这么普及,对于条码的识别,很多应用场合都需要使用。在这里就介绍一个比较小的条码识别库,它就是pyzbar,对于一般的条码,它是能识别出来的,如果比较新的格式可能识别不了。可以使用下面的命令来安装它: pip install -i https://pypi.tuna.tsinghua.ed...

2019-11-30 20:51:39

阅读数 111

评论数 1

原创 在OpenCV里实现不规则ROI的选取

有时候处理图像时,需要像画图软件一样,可以点击鼠标来选择不同的区域,这样选择的区域往往是不规则的图像,那么怎么样才可以在OpenCV里实现这样的功能呢?在这里要采用一点技巧,就是图像的像素与白色像素的与关系运算,任何颜色像素与白色像素作与运算都会只有这个像素的颜色,而与黑色像素运算就只剩下黑色。不...

2019-11-28 09:21:05

阅读数 80

评论数 0

原创 在OpenCV里手写数字案例1

前面学习过SVM来识别手写数字,这次要从自己拍摄的照片来进行识别,这样就会增加了许多流程,比如怎么样把照片里的数字进行分割,怎么样进行调整大小,怎么样计算HOG等等。 现在就来实现把下面的图片进行拆分: 目标是把上面的数字分拆成一个一个的数字图片,如下图: 这个过程是怎么样实现的呢?...

2019-11-27 10:41:03

阅读数 37

评论数 0

原创 在OpenCV里实现彩色图像的直方图显示

由于彩色图像是由三个颜色组成,因此需要先把彩色图像进行分离成三个颜色平面,才可以按每种颜色去计算直方图,这样就是通过calcHist函数来统计数据出来,再通过matplotlib来显示出来,演示代码如下: #python 3.7.4,opencv4.1 #蔡军生 https://blog.cs...

2019-11-26 14:59:21

阅读数 47

评论数 0

原创 在OpenCV里实现内旋轮线

还记得小时候的万花尺吧? 一点也不费脑筋,就可以出来这么多丰富多彩的复杂几何图形。 其实这些都是内旋转轮曲线。那么怎么样才可以在OpenCV里画出这样的曲线呢?这就需要计算曲线上每一点的坐标值了,需要使用到内旋轮线的公式。内旋轮线(hypotrochoid)是追踪附着在围绕半径为 R 的固...

2019-11-26 11:25:16

阅读数 64

评论数 0

提示
确定要删除当前文章?
取消 删除