自定义博客皮肤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--用软件和芯片来改变世界

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

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

2019-12-31 11:10:21 754 0

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

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

2019-12-31 08:45:24 2453 6

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

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

2019-12-30 17:11:09 1302 0

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

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

2019-12-30 15:35:22 1021 1

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

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

2019-12-27 16:30:46 1455 0

原创 在OpenCV里用ellipse画椭圆形

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

2019-12-27 10:22:23 866 0

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

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

2019-12-26 11:44:18 1123 0

原创 在OpenCV里用drawContours画轮廓

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

2019-12-25 10:48:25 676 2

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

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

2019-12-24 15:55:52 631 2

原创 在OpenCV里用circle画圆图形

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

2019-12-24 10:06:32 736 0

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

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

2019-12-23 17:02:42 1026 0

原创 在OpenCV里用polylines画多边形

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

2019-12-23 11:48:10 1449 0

原创 在OpenCV里玩贪吃蛇

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

2019-12-20 11:37:42 1249 0

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

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

2019-12-19 10:21:13 325 0

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

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

2019-12-18 10:14:39 1680 0

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

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

2019-12-17 09:37:39 436 0

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

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

2019-12-13 14:12:41 908 1

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

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

2019-12-12 11:00:22 373 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 145 0

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

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

2019-12-06 14:39:44 110 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 132 0

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

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

2019-12-05 17:43:59 134 0

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

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

2019-12-05 12:02:39 111 0

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

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

2019-12-05 10:41:16 113 0

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

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

2019-12-05 09:30:08 128 0

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

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

2019-12-04 08:17:23 156 0

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

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

2019-12-02 16:01:12 583 0

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

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

2019-12-02 08:05:08 429 0

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