zoukankan      html  css  js  c++  java
  • KMeans算法分割图片

    使用KMeans算法对简单的jpg图片进行处理得到大概轮廓

    #coding = utf-8
    
    import numpy as np
    import PIL.Image as image
    from sklearn.cluster import KMeans
    
    
    def loadData(filePath):
        f = open(filePath, 'rb')#以二进制打开文件
        data = []
        img = image.open(f)#列表形式存储图片像素值
        m,n = img.size#获得图片大小,为遍历每个像素准备
        for i in range(m):
            for j in range(n):
                x, y, z = img.getpixel((i, j))#getpixel返回指定位置的像素,如果所打开的图像是多层次的图片,那这个方法就返回一个元组。
                data.append([x/256.0, y/256.0, z/256.0])#将每个像素归一化成0-1
        f.close()
        return np.mat(data), m, n#返回矩阵形式的data,以及图片大小
    
    imgData, row, col = loadData("F:data\bull.jpg")#使用loadData方法处理图片
    
    label = KMeans(n_clusters=8).fit_predict(imgData)#聚类获取每个像素所属类别
    label = label.reshape([row, col])
    
    #创建一张灰度图保存聚类后的结果
    pic_new = image.new("L", (row, col))
    
    #根据所属类别向图片中添加灰度值
    for i in range(row):
        for j in range(col):
            pic_new.putpixel((i, j), int(256/(label[i][j]+1)))
    #保存图片
    pic_new.save("F:data\result_bull.jpg", "JPEG")
    View Code

    处理前:

    处理后:

  • 相关阅读:
    单调栈
    LRU先进先出算法
    IntelliJ IDEA 的安装
    IntelliJ IDEA 的介绍
    Tampermonkey 油猴脚本例子2
    Tampermonkey 油猴脚本例子
    Python PIL.Image 图片操作
    Python os 备查
    Pytorch tensor 常用操作 备查
    Pytorch torchvision.utils.save_image 图片保存工具
  • 原文地址:https://www.cnblogs.com/millerfu/p/7801316.html
Copyright © 2011-2022 走看看