高中教学课件:字符画.pptx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Get新技能:图片转为字符画;;;from?PIL?import?Image?# PIL 是一个 Python 图像处理库 ascii_char = list($@B%8WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~i!lI;:,\^`. ) # 是我们的字符画所使用的字符集,一共有 70 个字符,字符的种类与数量可以自己根据字符画的效果反复调试的 WIDTH =?60?# 字符画的宽 HEIGHT =?45?# 字符画的高 # 将256灰度映射到70个字符上,也就是RGB值转字符的函数: def?get_char(r, g, b, alpha=256):??# alpha透明度 ? ?if?alpha ==?0: ? ? ? ?return? ? ?length = len(ascii_char) ? ?gray = int(0.2126?* r +?0.7152?* g +?0.0722?* b) ?# 计算灰度 ? ?unit = (256.0?+?1) / length ? ?return?ascii_char[int(gray / unit)] ?# 不同的灰度对应着不同的字符 ? ?# 通过灰度来区分色块 if?__name__ ==?__main__: ? ?img =?C:/Users/lec/Desktop/ascii_dora.png?# 图片所在位置 ? ?im = Image.open(img) ? ?im = im.resize((WIDTH, HEIGHT), Image.NEAREST) ? ?txt =? ? ?for?i?in?range(HEIGHT): ? ? ? ?for?j?in?range(WIDTH): ? ? ? ? ? ?txt += get_char(*im.getpixel((j, i)))?# 获得相应的字符 ? ? ? ?txt +=?\n ? ?print(txt) ?# 打印出字符画 ? ?# 将字符画 写入文件中 ? ?with?open(C:/Users/lec/Desktop/output.txt,?w)?as?f: ? ? ? ?f.write(txt);重点注意;PIL:Python Imaging Library, 是Python平台事实上的图像处理标准库。;典型例子1: //读取图片并显示 from PIL import Image, ImageDraw #指定路径 sample_image_path = os.path.join(RAW_DATA_DIR, normal_1/images/img_0.png) #读入图片 sample_image = Image.open(sample_image_path) print sample_image.format, %dx%d % sample_image.size, sample_image.mode #输出 plt.title(Sample Image) plt.imshow(sample_image) plt.show();典型例子2: #图片格式转换 import os, sys import Image for infile in sys.argv[1:]: f, e = os.path.splitext(infile) outfile = f + .jpg if infile != outfile: try: Image.open(infile).save(outfile) except IOError: print cannot convert, infile;ImageDraw: #给图像绘制一个矩形框 sample_image_roi = sample_image.copy() fillcolor=(255,0,0) draw = ImageDraw.Draw(sample_image_roi) points = [(1,76), (1,135), (255,135), (255,76)] for i in range(0, len(points), 1): draw.line([points[i], points[(i+1)%len(points)]], fill=fillcolor, width=3) del draw #删除变量 plt.title(Image with sample ROI) plt.imshow(sample_image_roi) plt.show();动手试试

文档评论(0)

K12精品教育资源分享 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年03月20日上传了教师资格证

1亿VIP精品文档

相关文档