圖像分割: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 篇原創文章 · 獲贊 18 · 訪問量 1810
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章