字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画。

但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢?

转化方法:

将彩色图片转化为灰度图

根据颜色深浅的RGB值(值域从0到255,其中0为黑色,255为白色)

涉及自己喜欢的字符集合

根据字符集顺序及字符集长度,由RGB值编码为对应的字符。

RGB

RGB色彩模式是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色。

通常情况下,RGB各有256级亮度,用数字表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。

灰度图

灰度图是指只含亮度信息,不含色彩信息的图象,就象我们平时看到的黑白照片:亮度由暗到明,变化是连续的。

因此,要表示灰度图,就需要把亮度值进行量化。通常划分成0到255共256个级别,其中0最暗(全黑),255最亮(全白)。在表示颜色的方法中,除了RGB外,从彩色图片中的RGB 到 灰度值Gray 转换公式为:

#在PIL中,从模式“RGB”转换为“L”模式(灰度模式)

Gray = 0.299R+0.587G+0.114B

比如我们用小写英文26字母作为我们的字符集。字符集容量为26(一个字符对应的值 区间宽度= 256/字符集长度)

这里的区间宽度为256/26=9.8),

gray与字符集对应关系:

gray区间对应字符

[0.0, 9.8)这|a

[9.8, 19.6)|b

[19.6, 29.4)|c

...|...

[225.6, 235.4]|x

[235.4, 245.2]|y

[245.2, 255.0]|z

RGB转字符函数

char_string = 'abcdefghijklmnopqrstuvwxyz'

def rgb2char(r, g, b):

length = len(char_string)

gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

# 每个字符对应的gray值区间宽度

unit = (256.0 + 1) / length

# gray值对应到char_string中的位置(索引值)

idx = int(gray / unit)

return char_string[idx]

预处理

如果尺寸太大或太小,导致我们打开txt文件无法辨识出字符画。所以要先将图片尺寸调整合适。这里注意,大家可根据需要更改伸缩系数delta系数

from PIL import Image

#预处理(将图片尺寸压缩,并转为灰度图)

def preprocess(img_path,delta=100):

img = Image.open(img_path)

# 获取图片尺寸

width, height = img.size

# 获取图片最大边的长度 if width > height:

max = width

else:

max = height

# 伸缩倍数scale

scale = max / delta

width, height = int(width / scale), int(height / scale)

img = img.resize((width, height))

return img

图片转字符

读取图片,根据坐标获得该像素的rgb元组,并编码为字符

def img2char(img_obj, savepath):

txt = ''

width, height = img_obj.size

# 获取像素点的rgb元组值,如(254, 0, 0),并将其转化为字符

for i in range(height):

line = ''

for j in range(width):

line += rgb2char(*img_obj.getpixel((j, i)))

txt = txt + line + '\n'

# 保存字符画

with open(savepath, 'w+', encoding='utf-8') as f:

f.write(txt)

img_obj = preprocess(img_path)

img2char(img_obj, savepath)

插入图片

更改char_string,变换你想要的效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Python实现图片转字符画的示例

本文地址: http://www.cppcns.com/jiaoben/python/200692.html

python图像转字符画_Python实现图片转字符画的示例相关推荐

  1. python图像转字符画_Python实现图片转字符画的代码实例

    如何利用Python实现图片转字符画详解 如何用python将图片转为字符画给小编你的心作纪念,小编的梦有你的祝福才能够完全,风浪再大,小编也会勇往直前,小编们的爱,镶在青春的纪念册. # codin ...

  2. python实现图片转字符画_Python实现图片转字符画的示例代码

    初学Python,在网上看到Python图片转字符画的教程,我也来尝试下. 首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python ...

  3. python动态图片转字符画_Python实现图片转字符画

    原博文 2018-05-17 13:18 − 一.任务描述   西普工程师想了解Python的命令行,以达到更好的对Python更深入的认知,打算利用argparse库实现图片转字符画的实验,结合Py ...

  4. python动态图片转字符画_Python:图片转字符画

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法:将彩色图片转化为灰度图 根据颜色深浅的RGB值(值域 ...

  5. python实现图片转字符画_Python实现图片转字符画的示例

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值 ...

  6. python将图片转为字符画_Python将图片转换为字符画的方法

    最近在学习python,看到网上用python将图片转换成字符画便来学习一下 题目意思是,程序读入一个图片,以txt格式输出图片对应的字符画,如图所示: 以下是python代码: # coding:u ...

  7. python把图片转为字符画_Python 实现图片转换为字符画

    主要使用 pillow 如果没有安装 使用 pillow install pillow 安装一下 看代码: from PIL import Image import argparse #字符画所用的字 ...

  8. python图像特征提取进行分割_python实现图片处理和特征提取详解

    这是一张灵异事件图...开个玩笑,这就是一张普通的图片. 毫无疑问,上面的那副图画看起来像一幅电脑背景图片.这些都归功于我的妹妹,她能够将一些看上去奇怪的东西变得十分吸引眼球.然而,我们生活在数字图片 ...

  9. 绕线画软件 绕线画制作软件 图片转绕线画软件

    一款使用简单便捷的绕线画软件,喜欢的小伙伴可以收藏下! 绕线画软件 绕线画制作软件 图片转绕线画软件

最新文章

  1. 滴滴裁员2000多人,去年亏损超百亿
  2. vc6.0开发环境两个辅助工具
  3. oracle number类型_一文看懂Oracle分页实现方案的三种方式
  4. 内存和显存_【硬件资讯】显存再升级?Nvidia新卡实锤GDDR6X!显存大升级能否带来性能提升??...
  5. 从Python 2切换到Python 3:您需要了解的内容
  6. 寻找链表中值域最小的节点并移到链表的最前面
  7. jmeter聚合报告详解
  8. IDEA 常用设置 与 常用操作(二)
  9. 常见笔顺错误的字_[转载]常见笔画笔顺易错字大全
  10. SRA数据下载以及转换格式
  11. iOS平台上aa(见缝插针)游戏的简易实现
  12. 【直播】陈安东,马琦钧:赛题Baseline讲解以及语音识别基础知识介绍
  13. 腾讯云服务器迁移报错Other go2tencentcloud are running.
  14. 初学python类必须要知道的三个基础知识(入门理解)
  15. 网络安全架构部署:Fail Closed,Fail Open,Fail safe,Fail over是什么意思?
  16. J2ME开发环境部署!
  17. Android开发:微信平台应用申请
  18. android apk编译打包过程
  19. 大数据分析与实践 数据预处理-主成分分析
  20. iia mysql php_win旗舰版位系统配置PHP环境IIS和mysql.docx

热门文章

  1. 简述数学建模的过程_【数学建模的基本工作流程】作业帮
  2. 计算机怎么弹出专业团队,2018年专业技术人员继续教育答案92分
  3. java 复制一个对象_Java如何完全复制一个对象
  4. mysql三阶段提交实现_基于两阶段提交的分布式事务实现(UP-2PC)
  5. python爬取网页停止_Python爬虫之爬取静态网页
  6. 解决开始时cmd进入dos中ping会提示未出现在内部文件中
  7. python 数学期望_数学期望(离散型和连续型)
  8. python找出主力合约价格_什么是期货主力合约?如何判断主力合约是哪个?
  9. python中数字的排序
  10. python3解析库pyquery