图像分割:K均值聚类分割(Kmeans)--python实现

直接上代码,原理大家都可以查到

注意:以下img自己加载即可,我是事先把图片转换成了单通道的Array形式,并且我的img是归一化后在0-1的。生成的label只有0,1两个值。

import cv2
import numpy as np

def seg_kmeans_gray(img):
    # 读取图片
    img = img

    # 展平
    img_flat = img.reshape((img.shape[0] * img.shape[1], 1))
    img_flat = np.float32(img_flat)

    # 迭代参数
    criteria = (cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER, 20, 0.5)
    flags = cv2.KMEANS_RANDOM_CENTERS

    # 进行聚类
    compactness, labels, centers = cv2.kmeans(img_flat, 2, None, criteria, 10, flags)

    # 显示结果
    img_output = 1-labels.reshape((img.shape[0], img.shape[1]))
    print(img_output)
    return img_output
    
label = seg_kmeans_gray(img)
发布了46 篇原创文章 · 获赞 17 · 访问量 1034

猜你喜欢

转载自blog.csdn.net/weixin_42054926/article/details/103232617