- 博客(28)
- 资源 (44)
- 收藏
- 关注
原创 在OpenCV里用getFontScaleFromHeight设置文字的大小
如果想在OpenCV里输出一些英语文字,如下图:这里看到输出文字的大小不一样,这需要怎么样来实现呢?由于OpenCV里所有显示的元素全是像素,那么文字也需要变换为图片才可以输出,因此这个字符的大小问题,就变成了图像变换问题了。幸好OpenCV已经提供了英文字符的输出大小的函数getFontScaleFromHeight,通过这个函数就可以计算你想输出字符的大小。接着来看一下get...
2019-12-31 11:10:21 1738 1
原创 为什么2019年这么拼命工作,却摆脱不了“穷”
进入社会后,年轻的人们一开始都是铆足干劲力争上游,但是结果却往往不尽人意,时间很容易会让你看清现实:社会里80%的财富掌握在20%的人手里。明明工作得很卖力了,很努力了,但是定的目标却没完成,赚钱也没赚够还得倒贴,小金库空空如也,整个人也心力憔悴,付出很多却成了瞎忙活。谈到赚钱这个话题,好像生活里人人都很焦虑,职场上事事也都让人头疼,不少人给自己2019的关键词是:忙。每天白天上班...
2019-12-31 08:45:24 2818 6
原创 在OpenCV里用fillPoly填充多边形
前面学习过fillConvexPoly函数,这个函数是用来填充凸多边形的,但在OpenCV里还添加了fillPoly函数,这个函数与fillConvexPoly函数有什么差别呢?一般来说,fillPoly函数可以填充任意形状的多边形,并且可以填充多个图形,但是速度比较慢。而fillConvexPoly函数反之,只能一次填充一个图形,并且凸多边形,速度比较快。下面来看一下函数定义:其中参...
2019-12-30 17:11:09 6357
原创 在OpenCV里用fillConvexPoly填充凸多边形
要理解这个函数,先来看一下什么是凸多边形,它的定义如下:多边形(Polygon): 由三条以上的直线所组成的形状为多边形。凸多边形(Convex Polygon):每个内角(Interior Angle)都是锐角(Acute Angle)或钝角(Obtuse Angle),也就是没有大于180°的优角(Reflexive Angle)的多边形。凹多边形(Concave Polygon)...
2019-12-30 15:35:22 2172 1
原创 在OpenCV里用ellipse2Poly生成椭圆近似线段
前面学习过使用ellipse函数来绘制椭圆,如果你并不需要这么真实的椭圆曲线,那么就可以使用ellipse2Poly函数。因为这个函数可以从椭圆里根据需要的角度来生成近似的椭圆线段。这个函数的定义如下:其中参数:center 椭圆的中心点坐标;axes 椭圆的长短轴的大小;angle 椭圆第一个轴与X轴方向的夹角,顺时针方向;arcStart 椭圆弧开始的角度;arcE...
2019-12-27 16:30:46 4020
原创 在OpenCV里用ellipse画椭圆形
在OpenCV里绘制椭圆,需要使用到ellipse函数,这个函数在这里是比较复杂的参数,要一下子了解它是不容易的事情,先来看一下OpenCV里是怎么样定义它的,如下图:从上面函数可以看到,在这里参数非常多,要理解每一个函数的作用,需要熟悉下面的示意图:这个函数不仅可以绘制椭圆,还可以绘一段椭圆弧,或者椭圆扇区。从上图可以看到img是要绘制图像,center是椭圆的中心点,axes是...
2019-12-27 10:22:23 2376
原创 在OpenCV里用drawMarker画标记符号
在人工智能的例子里,经常会做一些报告,而报告时需要把图上的细节地方标记出来,在画图的软件里,可以使用软件定义的图标来标记。如果在OpenCV里动态演示的例子,就用不上画图软件的功能了,这时就需要使用OpenCV提供的标记功能,它就是由函数drawMarker提供的,它主要提供了下面类型的图案:从上图可以看到提供了七种标记的图案,具体需要使用哪一个图案,就看自己的需要了。那么怎么样来绘...
2019-12-26 11:44:18 2438
原创 在OpenCV里用drawContours画轮廓
在OpenCV里,找到物体的轮廓是最常用的功能,为什么这样说呢?因为太多的应用要使用这个功能了,比如数物体的个数,在种子实验室里常常要使用计算种子的个数,这时就需要拍照种子的照片,然后根据照片来数出种子的个数,以便以后计算种子的发芽率。又比如农业上的应用,大家都喜欢吃虾,但是虾苗的培育是需要很高的技术,所以养成年虾和虾苗的农户就不一样了。在买卖虾苗的过程中,由于虾苗的个头比较小,需要大量人工来数虾...
2019-12-25 10:48:25 1980 2
原创 在OpenCV里用clipLine裁剪直线段
如果你学习过图形学,就会对这个裁剪算法有深入的了解,比如Sutherland–Cohen算法大体的意思如下:第一步,判定:1) 完全在窗口内的直线段,称为完全可见的线段,如AB。保留着2) 完全在窗口外的线段,称为完全不可见线段,如CD。抛弃掉第二步,处理不能断定为完全可见或完全不可见的线段,如IJ、KL*这时需要计算出直线段和窗口边界的一个交点,这个交点把直线分成两...
2019-12-24 15:55:52 2325 2
原创 在OpenCV里用circle画圆图形
在OpenCV提供了一个画圆的函数circle,这个函数比较简单,先来看一下这个函数的定义:img为要画的图像;center为画圆的圆心坐标;radius为圆的半径;color为设定圆的颜色,规则根据B(蓝)G(绿)R(红)顺序排列;thickness 如果是正数,表示组成圆的线条的粗细程度。否则-1,表示圆是否被填充;line_type 线条的类型,默认是8;sh...
2019-12-24 10:06:32 2999
原创 在OpenCV里用arrowedLine画箭头图形
经常使用OpenCV来做项目,就发现有更多的需求,比如像下图中使用箭头来指示:看到白色的箭头来标记目标物体,这样才会让大家看东西更加具体化,更加形象化,特别用在教育领域,想让学生看到目标区域,使用箭头更是比比皆是,从细节上就让别人放心。那么接着的问题就来了,怎么样在OpenCV里实现这个箭头显示呢?是加载一个图片进行贴上去?其实不用这么复杂,在OpenCV里已经考虑到大家的需求,已经实现了...
2019-12-23 17:02:42 2304
原创 在OpenCV里用polylines画多边形
在OpenCV进行图像处理时,有时候需要标记一些多边形物体,那么就需要使用函数polylines来画出来。先来看看这个函数polylines画出来的图,如下:要深入地应用这个函数,我们得把这个函数的参数研究明白才可以灵活运用,因此来看一下这个函数的参数:在这个函数使用的参数很多,一眼看上去,就会有点害怕。不过仔细地分析和了解之后,就可以根据需要来设置每一个参数。这个函数的...
2019-12-23 11:48:10 5469
原创 在OpenCV里玩贪吃蛇
前段时间有一个大学生问我,学习OpenCV过程中,看代码都提不起兴趣,没有学习的动力,有没有什么方法既可以好玩,又能学习到知识。我一直在思考这个问题,在寻找好玩的方式,第一个想到就是游戏了。好吧,今天就来开发一个简单的游戏:贪吃蛇,不但很好玩,还可以学习到OpenCV的概念和函数的应用,以及学会键盘交互应用的过程。游戏的实现过程,其实就是不断地更新屏幕显示,让每一帧数据产生变化,也就是有...
2019-12-20 11:37:42 1721 1
原创 在OpenCV里实现复印件校正和切边
有一天早上,张三刚上班,冲了一杯茶,正回到工作电脑前,他的老板就匆匆地走过来,让他赶紧打开昨晚2点发送过来的邮件,这个邮件是客户发送过来的。客户提出了下面这样一个需求:把上面这个文件进行校正,并保存为新的文件。原来张三的公司是开发复印机,一般情况下,普通的复印机都是要求人们把复印的文件按照复印机上的标尺来摆正,然后再开始复印。但是这个客户提出来了一个需求,把证件放到复印机任何位置,任何摆放...
2019-12-19 10:21:13 1081
原创 在OpenCV里实现扑克牌识别3
在前面使用两个图像相减的差值来识别,在识别的结果里,发现有时候识别错误率很高,那么就需要想办法来改善这种情况。首先来分析一下,为什么图像相减识别的错误率会这么高?如果仔细地分析它们的相减之后的图片,就会发现这样一个问题,当拍摄的扑克牌与库里的牌有角度的差异时,投影变换回来的图像,它们之间显然有像素的差别,导致数量不一样,这样相减就会有影响最后计算像素的个数了。因此,这种切变的特性导致这种方法识别率...
2019-12-18 10:14:39 3095 3
原创 在OpenCV里实现扑克牌识别2
要对扑克牌的识别,前面只是对每一个牌做了标记,这样提供了一个识别的基础,也就是识别的知识库。要把新拍摄进来的牌进行识别,比如像下图:在这里看到一下子拍摄到四张牌,目标是把这四张牌识别出来,那么需要怎么样做呢?其实可以根据前面的内容,同样把这四张牌分割开来,这是第一步。接着把分离出来的牌到前面标记过的牌库里搜索,如果牌相同就可以找到标签了。整个过程里,分离出来每一张牌,已经不是难点,主要的问...
2019-12-17 09:37:39 1729
原创 在OpenCV里实现扑克牌识别1
扑克牌的游戏非常多,相信大家在大学里会经常玩的一种游戏,因为它简单,携带非常方向,放入到口袋里不占地方。并且它的玩法也是多种多样,比如24点,升级,斗地主等等。当你跟朋友在玩24点游戏时,就是比较谁计算出来最快。但是有一些人想用聪明的办法,比如通过摄像头拍摄扑克牌,然后自动地在后台计算,然后再通过耳机告诉他。假如你是他的朋友,要帮他实现这个目标,那么怎么样来处理呢?现在就来简单地实现这个...
2019-12-13 14:12:41 2950 4
原创 在OpenCV里使用最简单方法实现二维码识别
现在二维码已经非常流行,每天必用的场景了。比如上班坐地铁,就可以使用用二维扫描坐地铁。如果坐公交车,也可以使用二维码进行支付。吃早餐也可以进行二维码支付,日常生活已经很难脱离二维码进行生活了。那么在越来越多的地方,也会大大地推广二维码,比如工业领域里,也会使用它。那么对于开发人员来说,学习会识别二维码已经成为必备的技能。有一天上司对你说,你的软件里实现一个二维码识别,扫一下就可以解决物品的种类,扫...
2019-12-12 11:00:22 1933
原创 《Fluent Python》读书笔记-1.8 函数
函数是一个对象def fun(n): '''注释''' return 1 if n < 2 else n * fun(n-1)print(fun(42))print(fun.__doc__)print(type(fun))输出如下:1405006117752879898543142606244511569936384000000000注释...
2019-12-06 16:17:01 315
原创 《Fluent Python》读书笔记-1.6 字典
字典类型dict在一般用户程序里不是常常使用到的,但是它提供的功能是时时刻刻在使用着,因此python里对它作了很大的优化,采用hash算法来实现。python提供映射的抽象基类:collections.abc.Mapping,而字典就是继承这个抽象基类,可以使用下面的代码来判断:from collections import abcmy = {}print(isinstan...
2019-12-06 14:39:44 330
原创 《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))提供了插入元素到列表。import bisects = [60,70,80,90]g = 'FDCBA'...
2019-12-06 10:29:11 343
原创 《Fluent Python》读书笔记-1.4 产生表达式
前面使用列表解释非常强大了,那么又为什么要引入产生表达式呢?如果仔细地看一下前面的解释表达式,它会把每一项值都计算出来,如果只是项数比较少时,或许是比较好的方式。如果需要访问的数据量有几万,几百万项,那么每一项计算出来是需要很多时间,同时也需要占用很多内存。毕竟内存是一台电脑有限的资源,如果数量用了,就不能再处理了。比如只有4G内存,那么最大也只能处理4G数据。为了突破这两个限制,需要另外一种语法...
2019-12-05 17:43:59 606
原创 《Fluent Python》读书笔记-1.3 内置序列容器
在python内置了很多序列容器,并且是采用C语言实现,如果按保存不同的数据类型来分,可以分为两类:一类元素可以不同数据类型的容器:list,tuple, collection.deque一类元素只能同一样数据类型的容器:str,bytes,bytearray,memoryview,array.array如果按是否可以修改元素来分:一类可修改的:list,byteaarray, a...
2019-12-05 12:02:39 277
原创 《Fluent Python》读书笔记-1.2 Python数学模型
Python提供内置的数据模型,并且尽可能地使得内置的函数和功能,因为这样速度会更快,除非有必要,否则不要实现自己的特别函数,因为内置的函数是基于C代码进行优化的。好处拥有和 Python 内建类型一致的 API (len)获得 Python 特性:切片,迭代获得 Python 标准库支持:reversed, sorted, random.choice注意自己不要使用 __...
2019-12-05 10:41:16 314
原创 《Fluent Python》读书笔记-1.1 Python数据模型
Python提供了一个完善的数据模型,只有符合这个数据模型才可以更方便地进行开发,才能尽可能地提升开发效率。下面就来演示两个简单的功能,Python Data Model 为自定义的数据类型(通过 Class)提供与 Python 内建类型一致的接口。实现方法是:在类中定义一些特殊的方法,比如 __add__() ;当开发者调用 len(object) 时,python 解析器将执行 object...
2019-12-05 09:30:08 357
原创 显示方程的图像,判断是否有极值
昨晚女儿正在家里做作业,看到她正为一道题苦思不得其解,也画不出来图形来。我只好使用python来帮她,把这个函数的图形画出来给她,所以就写了下面的代码,让她看到之后,就有思考的方向了。显然比手工画图快很多,代码如下:import numpy as npimport scipy as spimport scipy.optimize as optimport matplotlib.pypl...
2019-12-04 08:17:23 483 1
原创 运行软件打不开,报“应用程序无法正常启动(0xc0150002)”的错误
出现这个问题,查看Windows的事件管理器,提示如下内容:“D:\work\ControlCAN.dll”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 请使用 sx...
2019-12-02 16:01:12 4168 5
原创 在OpenCV里实现条码区域识别
在我们识别条码的过程里,首先要找到条码所在的区域,那么怎么样来找到这个条码的区域呢?如果仔细地观察条码,会发现条码有一个特性,就是水平的梯度和垂值的梯度会不一样,如果进行相减,会发现差值比较大。如果其它位置的图像一般不会这样。利用这个特性,就可以把条码所在区域求出来。演示的代码如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/ca...
2019-12-02 08:05:08 1101
python抓取天气并分析 实例源码
2017-08-28
书《深度学习》
2017-03-13
国产8051模拟器
2016-09-10
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
开源鸿蒙4.0不能进入桌面的补丁
2024-03-17
开源鸿蒙 4.0 RK3566开发板配置
2024-03-17
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
python web py入门配套源代码
2018-02-23
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人