• 第九次作业——K-means算法应用:图片压缩


    一.读取一张示例图片或自己准备的图片,观察图片存放数据特点。

    根据图片的分辨率,可适当降低分辨率。

    再用k均值聚类算法,将图片中所有的颜色值做聚类。

    然后用聚类中心的颜色代替原来的颜色值。

    形成新的图片。

    观察原始图片与新图片所占用内存的大小。

    将原始图片与新图片保存成文件,观察文件的大小。

    #读取一张示例图片或自己准备的图片,观察图片存放数据特点
    from sklearn.datasets import load_sample_image 
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    import numpy as np
    
    #读取图片
    china = load_sample_image("china.jpg")
    plt.imshow(china)
    plt.show()
    print(china.shape)#观察图片存放数据特点
    china
    
    #根据图片的分辨率,可适当降低分辨率
    image = china[::3, ::3] 
    X = image .reshape(-1,3)
    plt.imshow(image)
    plt.show()
    print(image.shape,X.shape)
    
    #再用k均值聚类算法,将图片中所有的颜色值做聚类。
    n_colors =64 #(256,256,256)
    model = KMeans(n_colors) 
    
    #每个点的颜色分类,0-63
    labels = model.fit_predict(X)
    
     #64个聚类中心,颜色值
    colors = model.cluster_centers_ 
    
     #用聚类中心的颜色代替原来的颜色值
    new_image=colors[labels] 
    
    #形成新的照片
    new_image=new_image.reshape(image.shape) 
    plt.imshow(new_image.astype(np.uint8))
    plt.show()
    
    #观察原始图片与新图片所占用内存的大小,将原始图片与新图片保存成文件,观察文件的大小。
    import matplotlib.image as img
    img.imsave('F:\china.jpg',china)
    img.imsave('F:\china_zip.jpg',image)

    运行结果

    二.理解贝叶斯定理:

    • M桶:7红3黄
    • N桶:1红9黄
    • 现在:拿出了一个红球
    • 试问:这个红球是M、N桶拿出来的概率分别是多少?

  • 相关阅读:
    关于Update语句在不同数据库中的差别
    MSIL指令速查表
    一个对于博客园的建议
    代码风格关于if语句
    关于Page.cs文件中注释的一点补充
    在Java、C#和C++中遍历集合
    BPEL4WS的开源Java实现
    【Linux】linux固定ip
    【Linux】【MySQL】MySQL主从数据库
    wpf 写个简单的控件吧
  • 原文地址:https://www.cnblogs.com/didi-l/p/9921664.html
Copyright © 2020-2023  润新知