形态学算法应用之连通分量提取的python实现——图像处理-python代码

时间:2024-02-16 19:20:14
import cv2
import numpy as np
import matplotlib.pyplot as plt

start_position=(100,350)  #(90,400)
img = cv2.imread('Fig0918.tif', 0)
_, img_bin = cv2.threshold(img, 210, 1, cv2.THRESH_BINARY)
kernel = np.ones((5, 5), dtype=np.uint8)
img_dst = np.zeros(img.shape)
img_dst[start_position] = 1
img_last = np.zeros(img.shape)

while (np.sum(img_dst-img_last) != 0):
    img_last = img_dst
    img_dst = cv2.dilate(img_last, kernel)
    img_dst = np.logical_and(img_dst, img_bin)
    img_dst = img_dst.astype(np.float)

plt.subplot(1,3,1)
plt.imshow(img,cmap='gray')
plt.axis("off")
plt.title("original")

plt.subplot(1,3,2)
plt.imshow(img_bin,cmap='gray')
plt.axis("off")
plt.title("binary")
plt.subplot(1, 3, 3)
plt.imshow(img_dst, cmap='gray')
plt.axis('off')
plt.title('connected_component')

plt.show()

此代码是从一个指定的起点开始,通过迭代膨胀和逻辑与操作,识别和提取与该点连通的图像区域。这种方法特别适用于分析和处理具有复杂形状或结构的图像,在图像分割、目标识别等领域有着广泛的应用。