图像腐蚀
erode()
主要针对二值图像,前景白色。 用卷积核扫描整张图像每个像素,如果卷积核覆盖区域都是白色点就保持白色,否则变成黑色。

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\erode.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((5, 5), np.uint8)
result = cv2.erode(img, kernel, iterations=10)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

图像膨胀
dilate()
图像膨胀是图像腐蚀的逆操作,也是主要针对二值图像,前景白色。用卷积核扫描整张图像每个像素,如果卷积核覆盖区域含有白色点整个卷积核都变成白色,否则保持黑色。

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\dilation.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((5, 5), np.uint8)
result = cv2.dilate(img, kernel, iterations=6)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

开运算
morphologyEx(),op参数传入对应的开运算标志
先腐蚀+再膨胀

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\erode.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((10, 10), np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

闭运算
morphologyEx(),op参数传入对应的闭运算标志
先膨胀+再腐蚀

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\closing.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((15, 15), np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

梯度运算
morphologyEx(),op参数传入对应的梯度运算标志

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\gradient.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((3, 3), np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

顶帽运算
morphologyEx(),op参数传入对应的顶帽运算标志

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\tophat.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((5, 5), np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

黑帽运算
morphologyEx(),op参数传入对应的黑帽运算标志

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("C:\\imgs\\closing.bmp", cv2.IMREAD_UNCHANGED)
kernel = np.ones((10, 10), np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

图像形态学处理
本文详细介绍图像处理中的形态学操作,包括图像腐蚀、膨胀、开运算、闭运算、梯度、顶帽和黑帽运算,使用Python和OpenCV实现,适用于二值图像处理,通过不同卷积核操作改善图像质量。
1189

被折叠的 条评论
为什么被折叠?



