网站注,东莞网站建设手袋加工,设计外包网站,网站优化软件排行榜3.1 形态学-腐蚀操作
img cv2.imread(CSDN.png)
cv2.imshow(CSDN, img)
cv2.waitKey(0)
cv2.destroyAllWindows如果腐蚀核的覆盖区域内的所有像素值都满足条件#xff08;阈值#xff09;#xff0c;则中心像素的值保持不变#xff1b;如果有任何像素值不满足条件#x…3.1 形态学-腐蚀操作
img cv2.imread(CSDN.png)
cv2.imshow(CSDN, img)
cv2.waitKey(0)
cv2.destroyAllWindows如果腐蚀核的覆盖区域内的所有像素值都满足条件阈值则中心像素的值保持不变如果有任何像素值不满足条件则中心像素的值被设置为0黑色。
kernal np.ones((3, 3), np.unit8)
# 传入3×3的腐蚀核iterration表示腐蚀的操作次数
erosion cv2.erode(img, kernal, iteration 2)
cv2.imshow(erosion, erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()多余的细线条没有了。
pie cv2.imread(pie.png)
cv2.imshow(pie, pie)
cv2.waitKey(0)
cv2.destroyAllWindows()接下来看随着迭代次数变多图像有什么变化
kernel np.ones((30, 30), np.unit8)
erosion_1 cv2.erode(pie, kernel, iterations 1)
erosion_2 cv2.erode(pie, kernel, iterations 2)
erosion_3 cv2.erode(pie, kernel, iterations 3)
res np.hstack((erosion_1, erosion_2, erosion_3))
cv2.imshow(res, res)
cv2.waitKey(0)
cv2.destroyAllWindows()图像越来越瘦 3.2 形态学-膨胀操作
kernal np.ones((3, 3), np.unit8)
dilation cv2.dilate(erosion, kernal, iternations 2)cv2.imshow(dilation, dilation)
cv2.waitKey(0)
cv2.destroyAllWindows可以看出腐蚀后的线条变细之后膨胀操作又将线条变粗了
所以我们可以将图像中的噪声点和比结构元素小而且多余需要去除的部分先用腐蚀操作去除然后再将我们需要的部分用膨胀操作变大。
pie cv2.imread(pie.png)kernel np.ones((30, 30), np.unit8)
dilate_1 cv2.dilate(pie, kernel, iterations 1)
dilate_2 cv2.dilate(pie, kernel, iterations 2)
dilate_3 cv2.dilate(pie, kernel, iterations 3)
res np.hstack((dilate_1, dilate_2, dilate_3))
cv2.imshow(res, res)
cv2.waitKey(0)
cv2.destroyAllWindows()可以看出随膨胀次数操作变多这个圆越来越肿。 3.3 开运算与闭运算
开运算先腐蚀再膨胀
用于去除小亮物体
img cv2.imread(CSDN.png)
kernel np.ones((5, 5), np.unit8)
opening cv2.morphologyEX(img, cv2.MORPH_OPEN, kernel)cv2.imshow(opening, opening)
cv2.waitKey(0)
cv2.destroyAllWindows()闭运算先膨胀再腐蚀
用于去除小暗物体
img cv2.imread(CSDN2.png)
cv2.imshow(CSDN2, img)
cv2.waitKey(0)
cv2.destroyAllWindows()img cv2.imread(CSDN2.png)kernel np.ones((5, 5), np.unit8)
closing cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)cv2.imshow(closing, closing)
cv2.waitKey(0)
cv2.destroyAllWindows()3.4 梯度运算
梯度运算的结果等同于膨胀操作和腐蚀操作结果的差值这个操作可以用来检测图像中的物体边缘。
gradient cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernal)cv2.imshow(gradient, gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()3.5 礼帽与黑帽
礼帽 原始输入 - 开运算结果
img cv2.imread(CSDN.png)
tophat cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow(tophat, tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()礼帽操作的效果是突出显示那些比结构元素小的物体 开运算之后原本比结构元素小的物体处理掉而比结构元素大的物体则几乎保持不变. 用原始输入减去开运算结果后剩下的是比结构元素小的物体。 黑帽 闭运算 - 原始输入
img cv2.imread(CSDN2.png)
blackhat cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow(blackhat, blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()img cv2.imread(CSDN.png)
blackhat cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow(blackhat, blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()黑帽操作的效果是用于突出显示比结构元素小的暗物体或凹陷区域。 闭运算之后原本比结构元素小的物体再膨胀过程中被完全填充在腐蚀过程也无法恢复。比结构元素大的物体在膨胀又腐蚀后变化不大。 用闭运算结果减去原始输入后留下来的则是原本的小暗物体的轮廓只不过变成了亮的小物体。