鱼C论坛

 找回密码
 立即注册
查看: 1772|回复: 1

[已解决]关于建立灰度与字符集的映射

[复制链接]
发表于 2017-12-25 10:38:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lhj390 于 2017-12-25 10:41 编辑
  1. from PIL import Image
  2. codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''#生成字符画所需的字符集
  3. count = len(codeLib)
  4. image = Image.open('妖怪名单.jpg').convert("L")#转换为黑白图片,参数"L"表示黑白模式
  5. codePic = ''
  6. for h in range(0,image.size[1]):  #size属性表示图片的分辨率,'0'为横向大小,'1'为纵向
  7.     for w in range(0,image.size[0]):
  8.         gray = image.getpixel((w,h)) #返回指定位置的像素,如果所打开的图像是多层次的图片,那这个方法就返回一个元组
  9.         codePic = codePic + codeLib[int(((count-1)*gray)/256)]#建立灰度与字符集的映射
复制代码

codeLib[int(((count-1)*gray)/256)]这段代码什么意思,为什么要这么算
最佳答案
2017-12-25 10:55:29
假设gray为0,那么就得到 codeLib[0]
假设gray为255,那么就得到 codeLib[-1]
假设gray为0-255之间的某个值x,对应的就是 codeLib[y] ,y 是通过公式计算得到的 y = int(((count-1)*x)/256)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-25 10:55:29 | 显示全部楼层    本楼为最佳答案   
假设gray为0,那么就得到 codeLib[0]
假设gray为255,那么就得到 codeLib[-1]
假设gray为0-255之间的某个值x,对应的就是 codeLib[y] ,y 是通过公式计算得到的 y = int(((count-1)*x)/256)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-5 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表