![](https://img-blog.csdnimg.cn/20210411193847206.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenCV-Python开发指南
文章平均质量分 79
OpenCV-Python开发指南
李元静
专注移动开发10年,对Android、鸿蒙、Python以及Flutter均有涉猎。最近更新Python爬虫与鸿蒙专栏,著有《Flutter App开发从入门到实战》一书,感兴趣的读者加微极客学编程,实时掌握博主的更新动态。
展开
-
1分钟制作朋友圈9宫格图片,不用任何P图软件
目录前言生成9宫格图片生成9宫格动图短视频生成动图9宫格GIF直接生成动图9宫格生成9宫格视频使用pyqt5打包成exe界面前言最近网上朋友圈微博已经掀起了9宫格图片的玩法。可以说将单个图片,或者说单个动图亦或视频分割成9份发在朋友圈,感觉很有趣。今天,博主就通过Python-OpenCV的知识,来帮助大家实现任意图像,视频,动图的9宫格原理。文末还有配套生成9宫格的pyqt5的源代码以及exe可运行文件奉上。生成9宫格图片一般来说,我们生成的9宫格图片是正方形的,毕竟朋友圈与微博整体的9宫格就是原创 2021-05-26 18:54:02 · 5328 阅读 · 47 评论 -
OpenCV-Python开发指南学习目录
OpenCV-Python开发指南目录如何让图像变亮图像加权和制作鬼影按位与运算获取图像重要的部分位平面分解与合成图像的加密和解密数字水印的嵌入与提取色彩空间类型色彩空间转换与HSV的简单应用HSV标记肤色与实现艺术效果几何变换之缩放几何变换之翻转几何变换之仿射几何变换之透视几何变换之重映射常规5大阈值处理自适应阈值处理与Otsu处理图像平滑处理腐蚀与膨胀通用形态学函数图像梯度与Sobel滤波器Scharr与Laplacian滤波器Canny边缘检测图像金字塔原创 2021-04-22 19:12:08 · 1437 阅读 · 8 评论 -
实现人脸手动祛痘效果---OpenCV-Python开发指南(60)
目录人脸祛痘原理实现手动人脸祛痘人脸祛痘原理其实,在前面的人脸磨皮以及美白的时候,我们就已经完成了人脸的祛痘,只要高度磨皮(双边滤波)就能达到祛痘的效果。但是一般来说,现在的美图App都会给用户提供手动祛痘的功能,毕竟自动美白祛痘的效果再怎么好,都不可能完美的复原所有的人脸,那么额外的针对个人的修复就显得格外重要。其实人脸祛痘说白了,就是图像修复。而OpenCV中提供的修补函数为cv2.inpaint()。这里,我们先来看看改函数的定义:def inpaint(src, inpaintMask,原创 2021-04-14 17:59:40 · 8231 阅读 · 0 评论 -
实现人脸美白算法---OpenCV-Python开发指南(59)
目录人脸美白原理人脸美白原理人脸美白原理说透了,就是一种图像的颜色空间处理,所以我们需要通过颜色空间进行设计。不过,我们先来参考以下PS对于图像美白的处理步骤:首先,新建一个图层,将这个图层设置为白色接着,将白色图层与原本图像进行alpha通道的颜色混合,这样就可以使图像整体变白。...原创 2021-04-13 18:05:24 · 10486 阅读 · 4 评论 -
实现人脸磨皮算法---OpenCV-Python开发指南(58)
目录抖音慢动作原理抖音慢动作原理原创 2021-04-12 18:11:22 · 9391 阅读 · 2 评论 -
实现抖音慢动作效果---OpenCV-Python开发指南(57)
目录抖音慢动作原理抖音慢动作原理原创 2021-04-11 18:02:30 · 7350 阅读 · 0 评论 -
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
目录抖音时光倒流原理抖音时光倒流原理抖音的时光倒流原理,应该来说最好理解,也就是将视频倒放。如果你是掌握PR或者AE的用户,那么视频倒放肯定手到擒来。但是,今天我们要做的是使用OpenCV程序实现视频的倒放效果(当然PR与AE底层实现的效果就是这段代码原理)。下面,我们来一步步掌握视频的整体倒放,以及部分倒放的操作代码。...原创 2021-04-10 18:13:42 · 7599 阅读 · 0 评论 -
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
目录抖音霓虹灯原理实现4个图片霓虹灯效果实现视频霓虹灯效果抖音霓虹灯原理抖音霓虹灯算法原理:实时的光斑绘制,我们观察抖音霓虹的,你会发现所有的光斑都是圆形。所以,这里我们会使用cv2.circle()函数负责绘制霓虹圆形效果。设计多幅素材图片,黑底上面有亮色的光斑,不同的图片中光斑的位置不同。算法原理简单点翻译就是:加载视频,每间隔1帧在图像绘制光斑,一共定义4种光斑的位置,循环在视频中进行渲染。实现4个图片霓虹灯效果一般来说霓虹灯的效果都在视频的上下左右的边缘。为了让读者更加的通俗易懂一原创 2021-04-09 18:02:39 · 7912 阅读 · 0 评论 -
实现抖音闪烁效果---OpenCV-Python开发指南(54)
目录抖音视频闪烁原理实现抖音视频闪烁抖音视频闪烁原理在抖音视频的抖动过程中,我们还可以发现其视频的颜色曝光度都发生了一些变化,并不是单纯的只有抖动效果。所以,本篇将来实现视频的闪烁效果。而图像闪烁的原理,其实说白了就是其曝光度的变化。在更改视频曝光度的之前,我们需要认识一个OpenCV中新的函数:cv2.LTU()。LUT就是Look Up Table(颜色查找表)的缩写,简单点儿理解就是:通过LUT,我们可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩。LUT文件就是一个包含了可以原创 2021-04-08 18:29:48 · 7813 阅读 · 0 评论 -
实现抖音视频抖动效果---OpenCV-Python开发指南(53)
目录漫画实现原理漫画实现原理原创 2021-04-07 18:13:39 · 7920 阅读 · 0 评论 -
实现漫画效果---OpenCV-Python开发指南(52)
目录漫画实现原理实现漫画效果的程序步骤实战实现漫画效果漫画实现原理在网上随便找一个漫画的图像,我们都可以清楚的看到漫画都比较粗糙,笔触夸张,也就是说色彩并不细腻,比如漫画的头发,看上去就是一个颜色,不仅如此漫画还保留了很多墨水绘制的线条,因此我们实现漫画的步骤,可以分为如下5步:应用双边滤波器来减少图像的色彩将彩色图像转换为灰度图像使用边缘检测算法提取灰度图像的边缘信息对于检测的边缘进行增强并二值化产生粗线条的特征图像将3步骤处理的图像与原图像进行叠加,最终实现漫画效果实现漫画效果的程序原创 2021-04-06 18:28:51 · 7899 阅读 · 0 评论 -
万恶的马赛克---OpenCV-Python开发指南(51)
目录马赛克算法原理马赛克算法原理在平常的生活中,我们会经常看到各种马赛克,比如某些宅男硬盘里的视频马赛克,有些直播犯罪嫌疑人的头像遮罩马赛克等。可以说在生活中,马赛克无处不在。因此,我们在学习OpenCV的同时,也要熟练掌握马赛克的应用。下面,我们来了解马赛克算法的具体原理。...原创 2021-04-05 18:35:14 · 10507 阅读 · 8 评论 -
实现油画效果---OpenCV-Python开发指南(50)
目录油画的实现原理油画的实现原理油画简单的理解是带有艺术感的图像,色彩相对于原图要更加鲜艳,但却是失真的。而且对于喜欢欣赏艺术的读者,肯定或多或少关注过油画,油画并不细腻,而且小部分因为色块的堆积非常模糊。所以,我们实现油画的原理是:逐行对图像进行处理,使设置相邻距离的像素进行打乱。...原创 2021-04-04 13:47:53 · 7434 阅读 · 1 评论 -
实现素描效果---OpenCV-Python开发指南(49)
目录素描的实现原理反色的实现高斯滤波素描的实现原理要实现一种图像处理的效果,首先我们需要掌握其实现的具体原理。相信经常使用PS的用户肯定自己通过该软件处理过素描的效果实现。那么,我们可以参考一样PS实现素描效果的步骤:去色:因为素描只有黑白两种颜色,所以彩色图像必须转换为灰度图像复制去色图层,并且反色。反色的公式为:Y(i,j)=255-X(i,j)对反射图像进行高斯模糊模糊后的图像叠加模式选择颜色减淡效果而颜色减淡的公式如下:C=MIN(A+(A+B)/(255-B),255)C:原创 2021-04-03 18:06:43 · 7421 阅读 · 0 评论 -
实现怀旧滤镜与连环画滤镜---OpenCV-Python开发指南(48)
目录牛仔滤镜实现原理实现牛仔滤镜牛仔滤镜实现原理不管是荣耀华为手机还是其他的手机,我们都可以找到相机中的牛仔效果,这是手机中常用的一种滤镜效果。牛仔风格的设计主要是在图像的颜色空间进行处理。以BGR为例,对B、G、R这3个通道的颜色数值进行处理,让图像有一种泛黄的牛仔效果。设计的转换公式如下:B=0.272r+0.534g+0.131bG=0.349r+0.686g+0.168bR=0.393r+0.769g+0.189*b计算公式中的小写的bgr是原图像的RGB通道的颜色,结果BGR是牛仔变原创 2021-04-03 13:53:42 · 7352 阅读 · 0 评论 -
实现抖音哈哈镜效果---OpenCV-Python开发指南(47)
目录前言哈哈镜放大效果前言在抖音中,我们经常看到各种抖音玩家都喜欢使用哈哈镜效果。那么什么是哈哈镜呢?在现实生活中,哈哈镜是指一种表面凹凸不平的镜子,可以反应出人像及物体的扭曲面貌。简单点来说就是拉伸人脸(物件),或者压缩人脸(物体)的效果。哈哈镜的实现原理如下:假设输入图像的宽高为w和h,图像中心点的坐标为(cx,cy)。那么图像中任意一点(x,y)到中心点的距离为(x-cx),(y-cy)。那么拉升放大,图像变换的半径为r,得到公式如下:x=(tx/2)(sqrt(txtx+tyty)/r原创 2021-04-02 19:11:36 · 8454 阅读 · 2 评论 -
屏幕录制与GIF转换---OpenCV-Python开发指南(46)
目录常规应用视频转换为GIF常规应用对于程序员来说,在实际的生活中,对于一些简单的程序,往往都是使用自己编写的代码。毕竟学以致用才能熟练掌握,而OpenCV在生活中最常用的一些功能包括:将视频转换为GIF、录制屏幕,图片格式转换等等等等。这些小程序说实话从网上下载往往会有很多的病毒,而使用PS或者PR的门槛对于有些人来说又有点高,那怎么办呢?自己动手丰衣足食。视频转换为GIF在前面的博文中,我们已经介绍了视频的相关操作。对于视频来说,其是由一帧一帧的图像构成的,同样的GIF图片也是。所以,我们可原创 2021-04-01 18:14:49 · 7188 阅读 · 1 评论 -
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
目录直方图均衡化实现灰度图像去雾实现彩色图像去雾直方图均衡化直方图均衡化的目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均衡的图像。这种均衡化,即实现了灰度值统计上的概率均衡,也实现了人类视觉系统上(HSV)的视觉均衡。一般来说,直方图均衡化可以达到增强图像显示效果的目的。最常用的比如去雾。下面,我们来分别实现灰度图像去雾以及彩色图像去雾。实现灰度图像去雾在OpenCV中,它提供了函数cv2.equalizeHist()来实现直方图均衡化,该函数的完整定义如下:def原创 2021-03-31 19:01:10 · 9996 阅读 · 1 评论 -
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
目录Fisherfaces原理Fisherfaces实现人脸识别Fisherfaces原理PAC方法是EigenFaces人脸识别的核心,它找到了最大化数据总方差特征的线性组合。但是其具有明显的缺点,在操作过程中会损失许多人脸的特征信息。因此在某些特殊的情况下,如果损失的信息刚好是用于分类的关键信息,必然导致结果预测错误。Fisherfaces采用LDA(Linear Discriminant Analysis,线性判别分析)实现人脸识别。线性判别分析最早由Fisher在1936年提出,是一种经典的线原创 2021-03-31 14:29:57 · 8559 阅读 · 1 评论 -
EigenFaces人脸识别---OpenCV-Python开发指南(43)
目录EigenFaces原理EigenFaces识别步骤EigenFaces实战人脸识别EigenFaces原理EigenFaces通常也被称为特征脸,它使用主成分分析(Principal Component Analysis,PAC)方法将高维的人脸数据处理为低维数据后,在进行数据分析和处理,获取识别结果。EigenFaces简单来说就是对原始数据使用PCA方法进行降维,获取其中的主成分信息,从而实现人脸识别的方法。EigenFaces识别步骤在OpenCV中,它给我们提供函数cv2.face.原创 2021-03-30 18:04:45 · 8487 阅读 · 0 评论 -
LBPH人脸识别---OpenCV-Python开发指南(42)
目录前言LBPH方法的基本原理LBPH实现步骤前言前篇博文我们讲解了人脸检测的基本操作。但人脸检测只是人脸识别领域的一个非常小的分支。一般情况下,使用人脸识别,都是比对对应的人脸的判断是否是本人,或者是否是某个人。所以,我们需要进一步学习人脸识别的相关知识。在OpenCV中,它提供了3种人脸识别的方法,分别为:LBPH方法,EigenFishfaces方法,Fisherfaces方法。本篇,将讲解LBPH方法进行人脸识别操作。LBPH方法的基本原理LBPH(Local Binary Pattern原创 2021-03-29 18:02:43 · 10615 阅读 · 0 评论 -
人脸检测---OpenCV-Python开发指南(41)
目录人脸检测函数检测图像中的N个人脸人脸检测函数在OpenCV中,人脸检测使用的函数是cv2.CascadeClassifier.detectMultiScale(),它可以检测图像中所有的人脸。其完整定义如下:def detectMultiScale(self, image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None):image:待检测的图像,通常为灰度图像scaleFactor:表原创 2021-03-28 18:03:17 · 7153 阅读 · 0 评论 -
K近邻算法识别数字---OpenCV-Python开发指南(40)
目录K近邻算法识别手写数字调整图像K近邻算法模型搭建K近邻算法机器学习算法是从数据中产生模型,也就是进行学习的算法。我们把经验提供给算法,它就能够根据经验数据产生模型。在面对新的情况时,模型就会为我们提供预测的结果。例如,识别数字,文字时,其实识别它们并不需要颜色,使用二值图像就行,而二值图像的数字文字都是0,1组成,机器学习会根据0与1的位置匹配最相近的文字或者数字,从而得出结果。而机器学习中的K近邻算法最适合识别图像中的文字或者数字信息。K近邻算法又称为KNN算法,是非常经典的机器学习算法。其原理原创 2021-03-27 18:21:26 · 7127 阅读 · 0 评论 -
视频处理VideoWriter类---OpenCV-Python开发指南(39)
目录VideoWriter构造函数write函数释放实战保存摄像头录制的视频录制Canny边缘检测视频VideoWriter在前一篇博文中,我们学习了如何使用摄像头,并处理每一帧的图像。但是,处理完视频之后,并没有讲解如何保存视频。所以,本篇将详细的讲解如何保存视频中的图片以及视频本身。在OpenCV中,它给我们提供了cv2.VideoWriter类将图片序列保存为视频。同时,通过该类,我们也可以修改视频的各种属性,完成对视频类型的转换。一般我们使用cv2.VideoWriter类,需要如下3个步骤原创 2021-03-26 18:23:17 · 8799 阅读 · 1 评论 -
视频处理VideoCapture类---OpenCV-Python开发指南(38)
目录视频VideoCapture类初始化检查摄像头是否初始化成功捕获帧释放属性设置grab()与retrieve()捕获摄像头视频捕获文件视频视频视频是非常重要的视觉信息来源,它是视觉处理过程中经常要处理的一类信号。实际上,视频是由一系列图像构成,这一系列的图像被称为帧,帧是以固定时间间隔从视频中获取的。获取帧的速度称为帧速率,其单位通常使用“帧率/每秒”表示,代表在1秒内所出现的帧数,也就是游戏迷称为的FPS。如果我们从视频中提取出独立的帧,就可以使用图像处理的方法对其进行处理,达到处理视频的目的。原创 2021-03-25 18:00:25 · 11463 阅读 · 2 评论 -
交互式前景提取---OpenCV-Python开发指南(37)
目录什么是交互式前景提取grabCut函数提取图像前景使用模板提取图像前景什么是交互式前景提取经典的前景提取技术主要使用纹理(颜色)信息,如魔术棒工具,或根据边缘(对比度)信息,如智能剪刀等完成。2004年,微软研究院的Rother等人在论文中提出了交互式前景提取技术。他们提出的算法,仅需要做很少的交互操作,就能够准确地提取出前景图像。在开始提取前景时,先用一个矩形框指定前景区域所在的大致位置范围,然后不断迭代地分割,直到达到最好的效果。经过上述处理后,提取前景的效果可能并不理想,存在前景没有提取出来原创 2021-03-24 18:00:56 · 7341 阅读 · 0 评论 -
用分水岭算法实现图像的分割与提取---OpenCV-Python开发指南(36)
目录图像分割分水岭算法waterShed函数形态学分割图像分割了解分水岭算法之前,我们需要了解什么是图像的分割。在图像的处理过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来。例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆,行人或者其他对象。我们希望将这些对象从视频中提取出来,而忽略那些没有对象进入背景的视频内容。分水岭算法图像分割是图像处理过程中一种非常重要的操作。分水岭算法将图像形象地比喻为地理学上的地形表面,实现图像分割,原创 2021-03-23 19:17:16 · 11477 阅读 · 3 评论 -
霍夫变换---OpenCV-Python开发指南(35)
目录什么是霍夫变换HoughLines函数HoughLines实战HoughLinesP实战HoughCircles实战什么是霍夫变换霍夫变换是一种在图像中寻找直线,圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough(霍夫)于1962年首次提出。最初的霍夫变换只能用于检测直线,经过发展后,霍夫变换不仅能够识别直线,还能识别其他简单的图形结构,常见的有圆形,椭圆等。HoughLines函数在OpenCV中,它给我们提供了cv2.Hough原创 2021-03-22 17:57:57 · 6779 阅读 · 0 评论 -
多模板匹配---OpenCV-Python开发指南(34)
目录多模板匹配获取匹配位置的集合循环在循环中使用zip()替换坐标实战多个子图像多模板匹配在上一篇的实战中,我们通过人物眼睛的子图,找出了其在图像中出现位置。但是,有些情况下,并不仅仅只有一次,比如我们讲解傅里叶变换时,曾介绍一张草原的狮子图。如果匹配某个草,可能单个图像内会有很多,这个时候就要找出多个匹配结果。而函数cv2.minMaxLoc()仅仅能找出最值,无法给出所有匹配区域的位置信息。所以,要想匹配多个结果,就需要进行如下4个步骤:获取匹配位置的集合首先,Numpy库中的函数where(原创 2021-03-21 18:06:50 · 7070 阅读 · 3 评论 -
模板匹配人眼---OpenCV-Python开发指南(33)
目录什么是模板匹配模板匹配函数实现模板匹配什么是模板匹配模板匹配是指在当前图像A内寻找与图像B最相似的部分,可以理解找茬,但是这里是找出一样的信息。一般我们将图像A称为输入图像,将图像B称为模板图像。模板匹配的原理就是将模板B图像在图像A上滑动遍历,找出与其匹配的部分。模板匹配函数在OpenCV中,它给我们提供了cv2.matchTemplate()函数来完成模板匹配。其函数的完整定义如下:def matchTemplate(image, templ, method, result=None,原创 2021-03-20 18:03:48 · 6382 阅读 · 0 评论 -
cv2实现傅里叶变换---OpenCV-Python开发指南(32)
目录前言实现傅里叶变换实现逆傅里叶变换前言在前一篇的博文中,我们详细讲解了傅里叶变换的原理以及使用Numpy库实现傅里叶变换。但是其实OpenCV有直接实现傅里叶变换的函数。在OpenCV中,我们通过cv2.dft()来实现傅里叶变换,使用cv2.idft()来实现逆傅里叶变换。两个函数的定义如下:cv2.dft(原始图像,转换标识)这里的原始图像必须是np.float32格式。所以,我们首先需要使用cv2.float32()函数将图像转换。而转换标识的值通常为cv2.DFT_COMPLEX_O原创 2021-03-19 17:56:19 · 8637 阅读 · 0 评论 -
傅里叶变换原理---OpenCV-Python开发指南(31)
目录前言傅里叶变化实现傅里叶变化实现逆傅里叶变化高通滤波与低通滤波前言要理解傅里叶变换,我们首先需要了解图像处理。在图像处理的过程中,一般分为空间域处理和频率域处理。空间域处理是直接对图像内的像素进行处理。空间域处理主要划分为灰度变换和空间滤波两种形式。灰度变换是对图像内的单个像素进行处理,比如调节对比度和处理阈值等。控制滤波处理涉及图像质量的改变,例如前面额图像平滑处理。空间域处理的优点:计算简单方便,运算速度更快频率域处理时先将图像变换到频率域,然后在频率域对图像进行处理,最后在通过反变换将图像原创 2021-03-18 18:24:04 · 6252 阅读 · 0 评论 -
图像的输入输出与显示---OpenCV-Python开发指南(30)
目录前言使用PIL读取,保存和显示图像使用matplotlib读取,保存和显示图像使用scikit-image读取,保存和显示图像前言在讲解后面的采样以及傅里叶变换之前,我们需要掌握python对图像的输入、输出以及显示等操作。本篇涉及都是简单的图像显示保存等操作,但是后面基于此复杂的变换都会或多或少用到这些知识。所以,别看非常简单,应用起来还是非常多的。使用PIL读取,保存和显示图像在PIL包中,使用Image.open()函数读取磁盘图像。获取图像后,我们可以完整的获取图像的宽高,分辨率等信息原创 2021-03-17 17:58:44 · 6437 阅读 · 0 评论 -
轮廓的特征值---OpenCV-Python开发指南(29)
目录前言宽高比ExtendSolidity等效直径方向掩摸和像素点前言轮廓自身的一些属性特征及轮廓所包围对象的特征对于描述图像具有重要意义。本篇博文将介绍几个轮廓自身的属性特征及轮廓包围对象的特征。宽高比在轮廓中,我们可以通过宽高比来描述轮廓,例如矩形的轮廓宽高比为:宽高比=宽度/高度下面,我们来计算矩形轮廓的宽高比,代码如下:import cv2img = cv2.imread("26_1.jpg")cv2.imshow("img", img)# 转换为灰度图像gray = cv原创 2021-03-16 18:03:55 · 5981 阅读 · 0 评论 -
凸包---OpenCV-Python开发指南(28)
目录前言获取凸包角点凸缺陷前言逼近多边形是某天图像轮廓的高度近似,而凸包的提出是为了简化逼近多边形的。其实,凸包跟逼近多边形很像,只不过它是物体最外层的“凸”多边形。简单的概括,凸包是指完全包含原有轮廓,并且仅由轮廓上的点所构成的多边形。凸包的特点是每一处都是凸的,即在凸包内连接任意两点的直线都在凸包的内部,并且任意连续3个点的内角小于180度。在OpenCV中,它给我们提供cv2.convexHull()来获取轮廓的凸包。其完整定义如下:def convexHull(points, hull=N原创 2021-03-15 17:56:07 · 6264 阅读 · 0 评论 -
轮廓拟合---OpenCV-Python开发指南(27)
目录前言绘制椭圆的矩形边界最小包围矩形框最小包围圆形框最优拟合椭圆最优拟合直线最小外包三角形逼近多边形前言在计算轮廓时,可能并不需要实际的轮廓,而仅需要一个接近于轮廓的近似多边形。比如矩形其实都是差不多的轮廓,都是长宽不相等且平行的四边形,那么只要提供一个近似的轮廓,我们就可以区分形状。在OpenCV中,它给我们提供了cv2.boundingRect()函数来绘制轮廓的矩形边界,其完整定义如下:def boundingRect(array):array:前面已经介绍过,array是一个灰度图像,原创 2021-03-14 18:13:41 · 6835 阅读 · 1 评论 -
Hu矩---OpenCV-Python开发指南(26)
目录什么是Hu矩获取Hu矩值形状匹配什么是Hu矩Hu矩是归一化中心矩的线性组合。Hu矩在图像的旋转,缩放,平移等操作后,仍然保持矩的特征不变,所以经常会用到Hu矩来识别图像的特征。在OpenCV中,我们可以通过cv2.HuMoments()函数获取Hu矩。该函数使用cv2.moments()函数的返回值作为参数,返回7个Hu矩值。其完整定义如下:def HuMoments(m, hu=None):m:是由函数cv2.moments()计算得到的矩特征值获取Hu矩值下面,我们就通过该函数获取原创 2021-03-13 17:58:50 · 5975 阅读 · 0 评论 -
矩特征---OpenCV-Python开发指南(25)
目录什么是矩特征矩的计算矩的特征提取一副图像的特征矩计算轮廓的面积计算轮廓的长度什么是矩特征通过前篇博文的学习,我们知道如何从图像中分解轮廓。而矩特征是比较两个轮廓最简单的方法,通过它们的轮廓矩就能判断。首先,轮廓矩代表了一个轮廓,一副图像,一组点集的全局特征。矩信息包含了对应对象不同类型的几何特征,比如大小,位置,角度,形状等。矩特征被广泛应用在图像识别,模式识别的场景中。矩的计算在OpenCV中,它给我们提供了cv2.moments()函数来获取图像的轮廓矩,其完整的定义如下:def mo原创 2021-03-12 17:59:38 · 8067 阅读 · 0 评论 -
查找并绘制轮廓---OpenCV-Python开发指南(24)
目录什么是图像轮廓查找图像轮廓参数mode绘制图像轮廓图像轮廓结合按位与获取图像前景对象什么是图像轮廓在前面的边缘检测中,虽然我们能够检测出边缘信息,但边缘是不连续的,检测到的边缘并不是一个整体。而图像的轮廓负责将边缘连接起来形成一个整体,用于后续的计算。需要特别注意,图像的轮廓是非常重要的一个特征信息,通过对图像轮廓的操作,我们能够获取目标图像的大小,位置以及方向等信息。查找图像轮廓图像中一个轮廓对应着一系列的点,这些点以某种形式表示图像中的一条曲线。在OpenCV中,它给我们提供了函数cv2.原创 2021-03-11 18:00:25 · 5604 阅读 · 1 评论 -
图像金字塔---OpenCV-Python开发指南(23)
目录什么是图像金字塔高斯金字塔拉普拉斯金字塔实战什么是图像金字塔图像金字塔是由一副图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过不断地降低采样所产生的,最小的图像可能仅仅只有一个像素点。如下图所示,分辨率从低到高,逐渐降低的图像集合。通常level0是原图,每往上一层图像的宽高降低为原来的一半,以此类推。比如假如level0的原图宽高为N,那么level1的宽高就为N/2,得到的就是(N/2)*(N/2)大小的图像。最简单的金字塔是通过删除图像的偶数行或偶数列得到。当然,也可原创 2021-03-10 18:05:54 · 5414 阅读 · 0 评论