• python 玩耍天地


    词云 wordcloud

    wordcloud轮子下载

    1. 下载上面链接里对应的 whl (我选的 xxx_win32.whl)到 本地 进行安装
    2. 一般地, 会结合 jieba 分词 还有 matplotlib 来做

    初识庐山面目

    # -*- coding: utf-8 -*-
    #导入所需库
    from wordcloud import WordCloud
    f = open(r'xxxAIgowordcollections.txt','r').read()
    wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(f)
    __author__ = 'Frank Li'
    # width,height,margin可以设置图片属性
    # generate 可以对全部文本进行自动分词,但是对中文支持不好
    # 可以设置font_path参数来设置字体集
    #background_color参数为设置背景颜色,默认颜色为黑色
    
    
    import matplotlib.pyplot as plt
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
    wordcloud.to_file('test.png')
    # 保存图片,但是在第三模块的例子中 图片大小将会按照 mask 保存
    
    
    # -*- coding: utf-8 -*-
    import matplotlib.pyplot as plt
    from PIL import Image as image
    import jieba
    import numpy
    from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
    
    __author__ = 'Frank Li'
    
    def chinese_jieba(text):
        # 通过jieba工具将中文文本做处理,并返回指定格式的内容
        wordlist_jieba = jieba.cut(text)
        text_jieba = ' '.join(wordlist_jieba)
        return text_jieba
    
    
    def main(filename):
        with open(filename, 'rb') as f:
            text = chinese_jieba(f.read().decode())
    
        mask_pic = numpy.array(image.open('heart.png'))  # 打开图像处理,设置遮罩层
    
        # 设置固定的词个数为0
        # stopwords = {'黑娃':0,'白嘉轩':0}
        # 也可以按照下面格式设置
        stopwords = set(STOPWORDS)
        stopwords = stopwords.union(set(['黑娃', '白嘉轩']))  # 将不想在词云上出现的词,放入集合中,也就是设置固定词个数为0
    
        wordclod = WordCloud(
            background_color='white',  # 设置背景颜色,默认是黑色
            margin=0,
            max_words=2000,  # 关键字的个数
            max_font_size=100,  # 字体大小
            font_path=r'C:WindowsFontssimsun.ttc',  # 设置中文识别
            mask=mask_pic,  # 添加遮罩层,也就是设置词云形状
            stopwords=stopwords,  # 过滤固定的词
        ).generate(text)  # 将text里面所有的词统计,产生词云
    
        # image_colors = ImageColorGenerator(mask_pic)
    
        plt.imshow(wordclod)
        # plt.imshow(wordclod.recolor(color_func=image_colors))
        plt.axis('off')
        plt.show()
        wordclod.to_file('bailuyuan.jpg')  # 保存图片
    
    
    if __name__ == "__main__":
        filename = r'C:UsersFrankLiDownloads白鹿原.txt'
        main(filename)
    
    
    

    将图像转为 字符画

    # -*- coding: utf-8 -*-
    __author__ = 'Frank Li'
    import os
    import math
    from PIL import Image
    
    class ProcessBar(object):
        """一个打印进度条的类"""
        def __init__(self, total):  # 初始化传入总数
            self.shape = ['▏', '▎', '▍', '▋', '▊', '▉']
            self.shape_num = len(self.shape)
            self.row_num = 30
            self.now = 0
            self.total = total
    
        def print_next(self, now=-1):   # 默认+1
            if now == -1:
                self.now += 1
            else:
                self.now = now
    
            rate = math.ceil((self.now / self.total) * (self.row_num * self.shape_num))
            head = rate // self.shape_num
            tail = rate % self.shape_num
            info = self.shape[-1] * head
            if tail != 0:
                info += self.shape[tail-1]
            full_info = '[%s%s] [%.2f%%]' % (info, (self.row_num-len(info)) * '  ', 100 * self.now / self.total)
    
            print("
    ", end='', flush=True)
            print(full_info, end='', flush=True)
    
            if self.now == self.total:
                print('')
    
    
    class MosaicImg(object):
        '''
        用于将源图像当成一个像素点合成目标图像
        '''
        def __init__(self,
                     target,            # 目标图像的路径,图像的透明区域会被忽略
                     img_path,          # 源图片的目录,里面的图片将被拿来作为像素点
                     pixel_size=50,     # 每个像素图片的宽高
                     size=(0, 0),       # 最后生成的图片的尺寸,格式是 (width, height)
                     scale_factor=-1,   # 缩放因子,0~1之间的浮点数,如果设定了这个,则 size 无效
                     ):
            path = os.path.split(target)
            name, ext = os.path.splitext(path[1])
            self.save_img = os.path.join(path[0], "mosaic_" + name + '.png')      # 生成的图像名字
            self.pixel_size = pixel_size
            # 处理目标图像
            self.target = Image.open(target).convert('RGBA')
            if scale_factor == -1:      # 使用 size 参数
                self.target.thumbnail(size)
            else:                       # 使用 scale_factor 参数
                new_size = (scale_factor * self.target.size[0], scale_factor * self.target.size[1])
                self.target.thumbnail(new_size)
    
            # 处理源图像
            self.images = {}            # key是一张图片的主颜色,value是该图片的 PIL.Image 对象
            self.images_count = {}
            file_list = os.listdir(img_path)
            print("正在读取源图像:")
            pb = ProcessBar(len(file_list))
            for file in file_list:   # 遍历目录
                img = Image.open(os.path.join(img_path, file)).convert('RGB')
                img.thumbnail((pixel_size, pixel_size))  # 重设图片大小
                color = self.main_color(img)    # 计算主颜色
                self.images[color] = img
                self.images_count[color] = 0
                pb.print_next()
            # 每个图像最多使用的次数
            self.max_img_use = 3 * self.target.size[0] * self.target.size[1] / len(self.images)
    
        def gen_mosaic_image(self):
            '''
            使用初始化的设置生成像素图。
            其具体做法是遍历目标图像,对每个像素点的颜色,从源图像
            的主颜色中找到一个最接近的,然后将该图像当成像素点
            '''
            # 最后生成的图像的大小
            size = (self.pixel_size * self.target.size[0], self.pixel_size * self.target.size[1])
            self.mosaic_img = Image.new('RGBA', size)
            # 开始生成图像
            print("正在生成图像: ")
            # 遍历每一个像素
            pb = ProcessBar(self.target.size[0])
            for x in range(self.target.size[0]):
                for y in range(self.target.size[1]):
                    r, g, b, a = self.target.getpixel((x, y))   # 得到该像素的颜色
                    if a == 0:  # 跳过透明区域
                        continue
                    min_score = 1000
                    min_color = None
                    for color in self.images:                   # 找到最接近的颜色
                        score = self.color_distance((r, g, b), color)
                        if score < min_score:
                            min_score = score
                            min_color = color
    
                    # 将图片贴上去
                    self.mosaic_img.paste(self.images[min_color], (x*self.pixel_size, y*self.pixel_size))
                    self.images_count[min_color] += 1           # 使用次数+1
                    # 超过了最大使用次数就删除
                    if self.images_count[min_color] > self.max_img_use:
                        self.images.pop(min_color)
                pb.print_next()
            print('正在保存图像,请稍候。')
            self.mosaic_img.save(self.save_img, format='PNG')
    
            return self.mosaic_img
    
        def main_color(self, image):
            '''
            得到一张图片的主颜色,这里使用了偷懒的做法,
            将图片resize到一个像素点大小,取该点的像素值
            '''
            img = image.resize((1, 1), Image.BICUBIC)
            return img.getpixel((0, 0))
    
        def color_distance(self, rgb_1, rgb_2):
            '''
            两个RGB颜色的相似度计算,使用LAB颜色空间
            '''
            R_1, G_1, B_1 = rgb_1
            R_2, G_2, B_2 = rgb_2
            rmean = (R_1 + R_2) / 2
            R = R_1 - R_2
            G = G_1 - G_2
            B = B_1 - B_2
            return math.sqrt((2+rmean/256)*(R**2)+4*(G**2)+(2+(255-rmean)/256)*(B**2))
    
    if __name__ == '__main__':
        current_path = os.path.dirname(os.path.abspath(__file__))   # 当前目录的完整路径
        img_path = os.path.join(current_path, 'images/')                # 存放源图像的目录
        target = os.path.join(current_path, 'images/xinxin.png')           # 目标图像
    
        ma = MosaicImg(target, img_path, 70, scale_factor=0.1)      # 初始化
        img = ma.gen_mosaic_image()
    
    

    短信接口 twilio

    
    

    scrapy + fake_useragent 爬虫

    # 做事就要做极致,要学便学无上法,最佳实践 ,不管他多难
    
    
    

    pip 指定源

    pip install pillow -i http://mirrors.aliyun.com/pypi/simple/ --extra-index-url https://pypi.python.org/simple --trusted-host mirrors.aliyun.com
    
    
    清华:https://pypi.tuna.tsinghua.edu.cn/simple
    
    阿里云:http://mirrors.aliyun.com/pypi/simple/
    
    中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
    
    华中理工大学:http://pypi.hustunique.com/
    
    山东理工大学:http://pypi.sdutlinux.org/ 
    
    豆瓣:http://pypi.douban.com/simple/
    

    DOS 时代游戏

    DOS 游戏有些无聊

    https://dos.zczc.cz/
    
    
    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    最少乘法次数 http://acm.nyist.net/JudgeOnline/problem.php?pid=46
    取石子(一)http://acm.nyist.net/JudgeOnline/problem.php?pid=23
    数的长度http://acm.nyist.net/JudgeOnline/problem.php?pid=69
    Dinner http://acm.nyist.net/JudgeOnline/problem.php?pid=218
    FatMouse' Trade http://acm.hdu.edu.cn/showproblem.php?pid=1009
    Elevator http://acm.hdu.edu.cn/showproblem.php?pid=1008
    Number Sequence http://acm.hdu.edu.cn/showproblem.php?pid=1005
    阶乘之和http://acm.nyist.net/JudgeOnline/problem.php?pid=91
    对象模型学习总结 (二) . 关于继承和多态
    cubieboard 配置WIFI
  • 原文地址:https://www.cnblogs.com/Frank99/p/10549168.html
Copyright © 2020-2023  润新知