- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)