win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算

Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm

开运算进行的操作是先将图像腐蚀,再对腐蚀的结果进行膨胀。开运算可以用于去噪、计数等。
例如,在下图中,通过先腐蚀后膨胀的开运算操作实现了去噪,其中:

win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算_第1张图片
● 左图是原始图像。
● 中间的图是对原始图像进行腐蚀的结果。
● 右图是对腐蚀后的图像进行膨胀的结果,即对原始图像进行开运算的处理结果。
从图中可以看到,原始图像在经过腐蚀、膨胀后实现了去噪的目的。除此以外,开运算还可以用于计数。例如,在对下图中的区域进行计数前,可以利用开运算将连接在一起的不同区域划分开,其中:
win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算_第2张图片

● 左图是原始图像。
● 中间的图是对原始图像进行腐蚀的结果。
● 右图是对腐蚀后的图像进行膨胀的结果,即对原始图像进行开运算的处理结果。
通过将函数cv2.morphologyEx()中操作类型参数op设置为“cv2.MORPH_OPEN”,可以实现开运算。其语法结构如下:

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

eg1:使用函数cv2.morphologyEx()实现开运算。
程序如下:

import cv2
import numpy as np
img1=cv2.imread("opening.bmp")
img2=cv2.imread("opening2.bmp")
k=np.ones((10,10),np.uint8)
r1=cv2.morphologyEx(img1,cv2.MORPH_OPEN,k)
r2=cv2.morphologyEx(img2,cv2.MORPH_OPEN,k)
cv2.imshow("img1",img1)
cv2.imshow("result1",r1)
cv2.imshow("img2",img2)
cv2.imshow("result2",r2)
cv2.waitKey()
cv2.destroyAllWindows()

在本例中,分别针对两幅不同的图像做了开运算。运行程序,结果如下图所示,其中:
● 图( a )是原始图像img1。
● 图( b )是原始图像img1经过开运算得到的图像r1。
● 图( c )是原始图像img2。
● 图( d )是原始图像img2经过开运算得到的图像r2。

win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算_第3张图片win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算_第4张图片
win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算_第5张图片win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.4 开运算_第6张图片

你可能感兴趣的:(Python-OpenCV,opencv,python,计算机视觉)