• 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

    处理前:

    处理后:

  • 相关阅读:
    汇总sql
    mybatis动态表名
    Windows下PHP(Thread Safe与Non Thread Safe)版本说明
    清除mssql日志
    ISAPI_Rewrite的一些参数
    sublime相关
    php301代码
    【备忘】win7下IIS 用FastCGI模块 配置PHP
    poj 2112 Optimal Milking floyd + 二分 + 最大流
    记录运行时间
  • 原文地址:https://www.cnblogs.com/millerfu/p/7801316.html
Copyright © 2020-2023  润新知