词云 wordcloud

wordcloud轮子下载

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

初识庐山面目

  1. # -*- coding: utf-8 -*-
  2. #导入所需库
  3. from wordcloud import WordCloud
  4. f = open(r'xxx\AI\go\wordcollections.txt','r').read()
  5. wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(f)
  6. __author__ = 'Frank Li'
  7. # width,height,margin可以设置图片属性
  8. # generate 可以对全部文本进行自动分词,但是对中文支持不好
  9. # 可以设置font_path参数来设置字体集
  10. #background_color参数为设置背景颜色,默认颜色为黑色
  11. import matplotlib.pyplot as plt
  12. plt.imshow(wordcloud)
  13. plt.axis("off")
  14. plt.show()
  15. wordcloud.to_file('test.png')
  16. # 保存图片,但是在第三模块的例子中 图片大小将会按照 mask 保存
  17. # -*- coding: utf-8 -*-
  18. import matplotlib.pyplot as plt
  19. from PIL import Image as image
  20. import jieba
  21. import numpy
  22. from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
  23. __author__ = 'Frank Li'
  24. def chinese_jieba(text):
  25. # 通过jieba工具将中文文本做处理,并返回指定格式的内容
  26. wordlist_jieba = jieba.cut(text)
  27. text_jieba = ' '.join(wordlist_jieba)
  28. return text_jieba
  29. def main(filename):
  30. with open(filename, 'rb') as f:
  31. text = chinese_jieba(f.read().decode())
  32. mask_pic = numpy.array(image.open('heart.png')) # 打开图像处理,设置遮罩层
  33. # 设置固定的词个数为0
  34. # stopwords = {'黑娃':0,'白嘉轩':0}
  35. # 也可以按照下面格式设置
  36. stopwords = set(STOPWORDS)
  37. stopwords = stopwords.union(set(['黑娃', '白嘉轩'])) # 将不想在词云上出现的词,放入集合中,也就是设置固定词个数为0
  38. wordclod = WordCloud(
  39. background_color='white', # 设置背景颜色,默认是黑色
  40. margin=0,
  41. max_words=2000, # 关键字的个数
  42. max_font_size=100, # 字体大小
  43. font_path=r'C:\Windows\Fonts\simsun.ttc', # 设置中文识别
  44. mask=mask_pic, # 添加遮罩层,也就是设置词云形状
  45. stopwords=stopwords, # 过滤固定的词
  46. ).generate(text) # 将text里面所有的词统计,产生词云
  47. # image_colors = ImageColorGenerator(mask_pic)
  48. plt.imshow(wordclod)
  49. # plt.imshow(wordclod.recolor(color_func=image_colors))
  50. plt.axis('off')
  51. plt.show()
  52. wordclod.to_file('bailuyuan.jpg') # 保存图片
  53. if __name__ == "__main__":
  54. filename = r'C:\Users\FrankLi\Downloads\白鹿原.txt'
  55. main(filename)

将图像转为 字符画

  1. # -*- coding: utf-8 -*-
  2. __author__ = 'Frank Li'
  3. import os
  4. import math
  5. from PIL import Image
  6. class ProcessBar(object):
  7. """一个打印进度条的类"""
  8. def __init__(self, total): # 初始化传入总数
  9. self.shape = ['▏', '▎', '▍', '▋', '▊', '▉']
  10. self.shape_num = len(self.shape)
  11. self.row_num = 30
  12. self.now = 0
  13. self.total = total
  14. def print_next(self, now=-1): # 默认+1
  15. if now == -1:
  16. self.now += 1
  17. else:
  18. self.now = now
  19. rate = math.ceil((self.now / self.total) * (self.row_num * self.shape_num))
  20. head = rate // self.shape_num
  21. tail = rate % self.shape_num
  22. info = self.shape[-1] * head
  23. if tail != 0:
  24. info += self.shape[tail-1]
  25. full_info = '[%s%s] [%.2f%%]' % (info, (self.row_num-len(info)) * ' ', 100 * self.now / self.total)
  26. print("\r", end='', flush=True)
  27. print(full_info, end='', flush=True)
  28. if self.now == self.total:
  29. print('')
  30. class MosaicImg(object):
  31. '''
  32. 用于将源图像当成一个像素点合成目标图像
  33. '''
  34. def __init__(self,
  35. target, # 目标图像的路径,图像的透明区域会被忽略
  36. img_path, # 源图片的目录,里面的图片将被拿来作为像素点
  37. pixel_size=50, # 每个像素图片的宽高
  38. size=(0, 0), # 最后生成的图片的尺寸,格式是 (width, height)
  39. scale_factor=-1, # 缩放因子,0~1之间的浮点数,如果设定了这个,则 size 无效
  40. ):
  41. path = os.path.split(target)
  42. name, ext = os.path.splitext(path[1])
  43. self.save_img = os.path.join(path[0], "mosaic_" + name + '.png') # 生成的图像名字
  44. self.pixel_size = pixel_size
  45. # 处理目标图像
  46. self.target = Image.open(target).convert('RGBA')
  47. if scale_factor == -1: # 使用 size 参数
  48. self.target.thumbnail(size)
  49. else: # 使用 scale_factor 参数
  50. new_size = (scale_factor * self.target.size[0], scale_factor * self.target.size[1])
  51. self.target.thumbnail(new_size)
  52. # 处理源图像
  53. self.images = {} # key是一张图片的主颜色,value是该图片的 PIL.Image 对象
  54. self.images_count = {}
  55. file_list = os.listdir(img_path)
  56. print("正在读取源图像:")
  57. pb = ProcessBar(len(file_list))
  58. for file in file_list: # 遍历目录
  59. img = Image.open(os.path.join(img_path, file)).convert('RGB')
  60. img.thumbnail((pixel_size, pixel_size)) # 重设图片大小
  61. color = self.main_color(img) # 计算主颜色
  62. self.images[color] = img
  63. self.images_count[color] = 0
  64. pb.print_next()
  65. # 每个图像最多使用的次数
  66. self.max_img_use = 3 * self.target.size[0] * self.target.size[1] / len(self.images)
  67. def gen_mosaic_image(self):
  68. '''
  69. 使用初始化的设置生成像素图。
  70. 其具体做法是遍历目标图像,对每个像素点的颜色,从源图像
  71. 的主颜色中找到一个最接近的,然后将该图像当成像素点
  72. '''
  73. # 最后生成的图像的大小
  74. size = (self.pixel_size * self.target.size[0], self.pixel_size * self.target.size[1])
  75. self.mosaic_img = Image.new('RGBA', size)
  76. # 开始生成图像
  77. print("正在生成图像: ")
  78. # 遍历每一个像素
  79. pb = ProcessBar(self.target.size[0])
  80. for x in range(self.target.size[0]):
  81. for y in range(self.target.size[1]):
  82. r, g, b, a = self.target.getpixel((x, y)) # 得到该像素的颜色
  83. if a == 0: # 跳过透明区域
  84. continue
  85. min_score = 1000
  86. min_color = None
  87. for color in self.images: # 找到最接近的颜色
  88. score = self.color_distance((r, g, b), color)
  89. if score < min_score:
  90. min_score = score
  91. min_color = color
  92. # 将图片贴上去
  93. self.mosaic_img.paste(self.images[min_color], (x*self.pixel_size, y*self.pixel_size))
  94. self.images_count[min_color] += 1 # 使用次数+1
  95. # 超过了最大使用次数就删除
  96. if self.images_count[min_color] > self.max_img_use:
  97. self.images.pop(min_color)
  98. pb.print_next()
  99. print('正在保存图像,请稍候。')
  100. self.mosaic_img.save(self.save_img, format='PNG')
  101. return self.mosaic_img
  102. def main_color(self, image):
  103. '''
  104. 得到一张图片的主颜色,这里使用了偷懒的做法,
  105. 将图片resize到一个像素点大小,取该点的像素值
  106. '''
  107. img = image.resize((1, 1), Image.BICUBIC)
  108. return img.getpixel((0, 0))
  109. def color_distance(self, rgb_1, rgb_2):
  110. '''
  111. 两个RGB颜色的相似度计算,使用LAB颜色空间
  112. '''
  113. R_1, G_1, B_1 = rgb_1
  114. R_2, G_2, B_2 = rgb_2
  115. rmean = (R_1 + R_2) / 2
  116. R = R_1 - R_2
  117. G = G_1 - G_2
  118. B = B_1 - B_2
  119. return math.sqrt((2+rmean/256)*(R**2)+4*(G**2)+(2+(255-rmean)/256)*(B**2))
  120. if __name__ == '__main__':
  121. current_path = os.path.dirname(os.path.abspath(__file__)) # 当前目录的完整路径
  122. img_path = os.path.join(current_path, 'images/') # 存放源图像的目录
  123. target = os.path.join(current_path, 'images/xinxin.png') # 目标图像
  124. ma = MosaicImg(target, img_path, 70, scale_factor=0.1) # 初始化
  125. img = ma.gen_mosaic_image()

短信接口 twilio


scrapy + fake_useragent 爬虫

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

pip 指定源

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

DOS 时代游戏

DOS 游戏有些无聊

  1. https://dos.zczc.cz/

python 玩耍天地的更多相关文章

  1. 【itchat】用Python玩耍微信

    [itchat] itchat是个基于网页版微信的python微信API.功能目前做到基本可以满足正常的消息收发,信息的获取等等.不过对于红包之类网页版微信不支持的功能,这个模块自然也就无法支持了. ...

  2. 如何用VSCode愉快的写Python

    在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器.由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio C ...

  3. python与VScode

    用VScode写python是非常方便的.vscode是一个功能非常强大的编辑器,下面介绍大致的使用方法: 下载安装python,配置环境变量. 下载安装VScode(vscode会自动连接pytho ...

  4. VSCode编辑器编写Python代码

    如何用VSCode愉快的写Python https://code.visualstudio.com/   在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带 ...

  5. Python之VSCode

    在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器.由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio C ...

  6. sonn_game网站开发01:写在最前面

    之前做的个人博客项目,日向博客现在已经进入后期完善阶段了.是时候开始打造一个新坑了. 然而改造个什么坑呢?构思了好几天,想了好多方案,都觉得没啥动手欲望.因为,我想做的是那种,自己能用得上,而且有一定 ...

  7. 理解 Python 的执行方式,与字节码 bytecode 玩耍 (下)

    上次写到,Python 的执行方式是把代码编译成bytecode(字节码)指令,然后由虚拟机来执行这些 bytecode 而 bytecode 长成这个样子:  b'|\x00\x00d\x01\x0 ...

  8. 理解 Python 的执行方式,与字节码 bytecode 玩耍 (上)

    这里有个博客讲 Python 内部机制,已经有一些中文翻译. 可能因为我用的Python 3.5,例子跑起来有些不一样. 此外,我又查了其他一些参考资料,总结如下: Python 的执行方式 先看一个 ...

  9. Python之路,Day7 - Python基础7 面向对象

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

随机推荐

  1. Ubuntu 18.04中截图工具Shutter的编辑按钮不可用的解决办法

    Shutter是一个由第三方提供的在Ubuntu上运行的截图工具,相对于系统自带的截图工具(默认可通过Ctrl + Shift + Print快捷键启动截图),最大的优点就是可以即时对图片进行编辑,在 ...

  2. Scala操作Hbase空指针异常java.lang.NullPointerException处理

    Hbase版本:Hortonworks Hbase 1.1.2 问题描述:使用Scala操作Hbase时,发生空指针异常(java.lang.RuntimeException: java.lang.N ...

  3. php类注释生成接口文档

    参考地址:https://github.com/itxq/api-doc-php

  4. MyBatis学习日记(一):拜见小主——MyBatis

    近日学习MyBatis,特将学习过程及一点心得记录于此. MyBatis为何物? MyBatis 是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC ...

  5. 算法学习之BFS、DFS入门

    算法学习之BFS.DFS入门 0x1 问题描述 迷宫的最短路径 给定一个大小为N*M的迷宫.迷宫由通道和墙壁组成,每一步可以向相邻的上下左右四格的通道移动.请求出从起点到终点所需的最小步数.如果不能到 ...

  6. maven打包如何跳过测试

    Maven打包如何跳过测试?正常来说,不应该这样做,因为测试可以避免很多麻烦排除一些不必要的错误,前提是测试足够规范,这里主要指junit测试,如果junit测试有问题的话,将会直接影响到mvn in ...

  7. Doctype知识点总结

    DOCTYPE是document type (文档类型) 的缩写.<!DOCTYPE >声明位于文档的最前面,处于标签之前,它不是html标签.主要作用是告诉浏览器的解析器使用哪种HTML ...

  8. codeblocks-17.12mingw-nosetup(mingw编译,绿色免安装版)的下载、安装及设置一

    一.先进入网址:http://www.codeblocks.org/downloads/,选择Download the binary release. 二.转换网页后,选择codeblocks-17. ...

  9. JAVA 调用exe程序执行对应的文件 (个人用于编译Java文件)

    需求: 需要利用Java程序,来调用计算机本身的黑窗口,来将特定的Java文件编译成对应的字节码文件. 实现思路: 通过调用Java的Runtime类,每个 Java 应用程序都有一个 Runtime ...

  10. css文字与排版

    目录 文字与排版样式 `font文字样式 排版样式(text) 文字半透明 文字阴影 背景和颜色 基本 背景简写 背景透明 背景缩放 列表样式 表格样式 表格边框样式 折叠边框 设置宽度和高度 表格对 ...