通用形态学函数

上篇博文,咱们介绍了形态学的根底腐蚀与胀大操作,而将腐蚀与胀大结合起来进行组合,咱们就能结束开运算,闭运算等杂乱的形态学运算。

在OpenCV中,它给咱们供给的通用形态学函数为cv2.morphologyEx(),其无缺定义如下:

de二进制f morphologyEx(测验郁闷症的20道题src, op, kernel, dst=None, anchor=None, iter测验ations=No二进制八进制十进制十六进制转换ne, borderTypopencv-pythone=None, borderValue=None):

这些参数底子前面都介绍过,不过有一点需求说明,src原始图画有必要是CV_8U,CV_16U,CV_16S,CV_32F,CV_64F中的一种。

当然,这儿面还有一个生疏的参数便是op,它便是各种形态学的类别,详细类别如表所示:

类型 说明 含义 操作
cv2.MORPH_ERO二进制DE 腐蚀 腐蚀 erode()
cv2.MORPH_DILATE 胀大 胀大 dilate()
cv2.MORPH_OPEN 开运算 先腐蚀后胀大 dilate(erodOpenCVe())
cv2.MORPH_CLOSE 闭运算 先胀大后腐蚀 erode(dilate())
cv2.MORPH_GRAD测验手机是否被监控IENT 形态学梯度运算 二进制大图减腐opencv人脸辨认原理蚀图 dilate()-erode()
cv2.MORPH_TOPHAT 顶帽运算 原始图画减开运算所得图画 src-open()
cv2.MORPH_BLACKHAT 黑帽运算 闭运算所测验得图画减原始图画 close()-src
cv二进制手表2.MORPH_HITMISS 击中击不中 远景布景腐蚀运算的交集。仅仅支撑CV8UC1二进制图画 intersection(erode(src),erode(src1))

开运算

如上表所示,开运算是将原图画腐蚀,再对其进行胀大操作。首要用于去噪,计数等。去噪咱们现已通过上面的腐蚀操windows许可证行将过期怎样办作就可以结束,下面咱们来结束风opencv入门要学多久趣的计数操作。

import cv2测验郁闷程度的问卷
impor梯度志愿是什么意思t num梯度grad计算公式py as np
img = cv2.imread("open.jpg",cv2.IMREAD_UNCHANGED)
kernel = np.二进制ones((9,9), np.float32)
re测验你的自卑程度sult = cv2.morphology测验Ex(img,cv2.MORPH_OPEN,kernel,iterations=5)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

作业之后,咱们能将不同区域区别开来,作用如下:

OpenCV(19)---通用形态学函数

闭运算

闭运算是先胀大后腐蚀的运算,它有助于封闭远景物体内部的小孔,或去除物体上的小黑点,还可以将不同的远景图画进行联接。下面,咱们就将上图进行联接。

import cv2
impwindows键是哪个ort num梯度公式py as np
img =梯度grad公式 cv2.imread("close.jpg", cv2.IMREAD_UNCHANGEDwindows10激活密钥)
kernel = np.ones((10, 1二进制转化为十进制0), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=7)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

作业之后,两个方块就联接为一个全体了,作用如下所示:

OpenCV(19)---通用形态学函数

形态学梯度运算

形态学梯度运算是用图画胀大后的图画减去腐蚀图画的运算,该操作可以获取原始图画OpenCV中的远景图画的边缘。咱们仍是用上篇opencv安装教程胀大的梯度grad公式图来测验,代码如下:

import cv2
import numpwindows怎样激活y as np
img = cv2.imread("8.jpg", cv2.IMREAD_UNCHANopencv是干什么的GED)
kernel = np.ones((5, 5), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel,iterations=2)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

作业之后,咱们的图画windows怎样激活就中空了,作用如下:

OpenCV(19)---通用形态学函数

顶帽运算

顶帽运算是用原始图画减去其开运算图画的操作。它可以获取图画的噪测验用例声信息,或许得到比原图画的边windows10沿更亮的边缘信息。也便是获取上图中的白色线条,详细代码如梯度grad计算公式下:

import cv2
import numpy as np
img = cv2.imread("8.jpg", cv2.IMREAD_UNC梯度志愿和平行志愿的区别HANGED)
kernel = np.onwindows字体被申述es((5, 5), np.float32)
result = cv2.morphologyEx(img, cv二进制八进制十进制十六进制转换2.MORPH_TOPHAT, kernel,iterations=2)
cv2.imshow("img", img)
cv2梯度是什么意思.imshow("result", result二进制)
cv2.waitKwindows7旗舰版ey()
cv2.destroyAllWindows()

作业之后,作用如下:

OpenCV(19)---通用形态学函数

黑帽测验用例运算

黑帽运算是用闭运算图画减去原始图画的操作。它能测验用例够获取内部的小孔,或前风光中的小黑点,亦或许得到比原始图画的边缘更暗的边缘部分。这儿opencv安装教程,咱们用前面的人物图画,代码如下:

import cv2
import numpy as np
img = cv2.imread(梯度洗脱"4.jpg", cv梯度下降法2.IMREAD_UNwindows更新有必要吗CHANGED)
kernel = np.ones((5, 5), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_opencv和openmv的区别BLACKHAT, kernel,iterations=2)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

作业之后,作用如下:

OpenCV(19)---通用形态学函数

结构元函数

前面咱们介绍过,结构元可以自定义,也梯度志愿是什么意思可以通过cv2.getStructuringElement()函数生成。这儿,咱们来看看其无缺的定义:

d梯度洗脱ef getStructuringElement(shape, ksize, anchor=None):

shape:形状类型,取值如下表:

类型 含义
cv2.MO二进制转化为十进制RPH_RECT 矩形结构元,测验工程师所有元素二进制转十进制计算器值为1
cv2.MORPH_CROSS 十字形结构元,对角线元素值为1
cv2.MOR梯度志愿是什么意思PH_ELWindowsLIPSE 椭圆形结构元素

ksize:结构元的巨细

anchor:结构元的锚点方位,windows字体被申述默认值梯度梯度grad计算公式-1windows是什么意思,1),是形状的中心。只要十字星型的二进制八进制十进制十六进制转换形状与锚点方位紧密联系。在其他情况下,锚点方位仅测验郁闷程度的问卷用于形态学运算结果的调整。

下面,咱们将这三种梯度公式形状类型都结束一遍,详细代码如下:

import cv测验手机是否被监控2
img = cv2.imread("open.jpg",opencvsharp cv2.IMREAD_UNCHANGED)
kernel1 = cv2.g二进制转化为十进制etStropencv安装教程ucturingElement(cv2.MORPH_RECT,(50,50))
kernel2 = cv2.getStructuringElement(cv2.MORPH_CROSS,(50,50))
kernel3 = cv2.getStru梯度grad公式cturingElement(cv2.MORPH测验郁闷程度的问卷_ELLIPSE,(50,50))
resu测验智商lt1 = cv2.dilate(img,kernel1)
result2 = cv2.dilate(img,kernel2)
result3 = cv2.dilate(img,kernel3)
cv2.imshow("img", img)
cv2.imshow("result1"测验郁闷程度的问卷, result1)
cv2梯度志愿.imshow("result2", reopencv-pythonsult2)
cv2.imshow("result3", result3)
cv2.waitKey()
cv2.destwindows更新有必要吗royAllWindows()

作业之后,作用如下所示:

OpenCV(19)---通用形态学函数