Python 图片转字符图
pip install Image argparse pillow
- from PIL import Image
- import argparse
- #命令行输入参数处理
- parser = argparse.ArgumentParser()
- parser.add_argument('file') #输入文件
- parser.add_argument('-o', '--output') #输出文件
- parser.add_argument('--width', type = int, default = 80) #输出字符画宽
- parser.add_argument('--height', type = int, default = 80) #输出字符画高
- args = parser.parse_args() # 获取参数
- IMG = args.file
- WIDTH = args.width
- HEIGHT = args.height
- OUTPUT = args.output
- # 我们定义的不重复的字符列表,灰度值小(暗)的用列表开头的符号,灰度值大(亮)的用列表末尾的符号
- ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
- # 将256灰度映射到70个字符上
- def get_char(r,g,b,alpha = 256):
- 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__':
- im = Image.open(IMG)
- im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
- txt = ""
- #将图片看成由像素点组成的二维数组,i代表每一行,j代表每一列
- for i in range(HEIGHT):
- for j in range(WIDTH):
- #getpixel()函数的参数是由每个像素点在图片中的相对位置(w,h)组成的元组
- #返回值是一个代表图片像素值的(r,g,b,alpha)元组
- txt += get_char(*im.getpixel((j,i)))
- txt += '\n'
- print(txt)
- #字符画输出到文件
- if OUTPUT:
- with open(OUTPUT,'w') as f:
- f.write(txt)
- else:
- with open("output.txt",'w') as f:
- f.write(txt)
python .\a.py .\time.jpg -o teaGod.txt --width 80 --height 40
转成视频图
- import cv2
- import os
- show_heigth = 30
- show_width = 80
- ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
- #生成一个ascii字符列表
- char_len = len(ascii_char)
- vc = cv2.VideoCapture("v.mkv") #加载一个视频
- if vc.isOpened(): #判断是否正常打开
- rval , frame = vc.read()
- else:
- rval = False
- frame_count = 0
- outputList = [] #初始化输出列表
- while rval: #循环读取视频帧
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #使用opencv转化成灰度图
- gray = cv2.resize(gray,(show_width,show_heigth))#resize灰度图
- text = ""
- for pixel_line in gray:
- for pixel in pixel_line: #字符串拼接
- text += ascii_char[int(pixel / 256 * char_len )]
- text += "\n"
- outputList.append(text)
- frame_count = frame_count + 1
- if frame_count % 100 == 0:
- print("已处理" + str(frame_count) + "帧")
- rval, frame = vc.read()
- print("处理完毕")
- for frame in outputList:
- os.system("cls") #清屏
- print(frame)
- print()
- print()
Python 图片转字符图的更多相关文章
- 教程,Python图片转字符堆叠图
Python 图片转字符画 一.实验说明 1. 环境登录 无需密码自动登录, 2. 环境介绍 本实验环境采用带桌面的UbuntuLinux环境,实验中会用到桌面上的程序: LX终端(LXTermina ...
- Python 图片转字符画
Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...
- Python 图片转字符画 学习笔记
Python 图片转字符画 学习笔记 标签(空格分隔): Python 声明:此文章和所有代码是学习笔记,非原创,原文教程地址:https://www.shiyanlou.com/courses/37 ...
- Java 图片转换为字符图 CharMaps (整理)
/* * Java 图片转换成字符图 CharMaps (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * @(#)CharMaps.java 2014/1/16 * 1.这个一 ...
- [笔记] Python 图片转字符画
一.介绍 用Python 代码完成图片转字符画 二.python 环境 Python 3.6.6 pillow 5.1.0 Python 图像处理库, 需要另外安装 三.原理 gray = 0.21 ...
- python小项目练习之转换像素图片为字符图
实例来源实验楼网站,没事可以多逛逛,在此多谢实验楼的无私分享 from PIL import Image import argparse """ description: ...
- python图片转字符画(转)
先上代码: from PIL import Image import argparse #命令行输入参数处理 parser = argparse.ArgumentParser() parser.add ...
- Python图片转字符
前段时间学习pillow写的,可以通过改变font_map改变转换的深度和字符.思路是先转换黑白大小,读取黑白值取范围读font_map转变. from PIL import Image,ImageD ...
- Python图片转字符画
PIL安装很麻烦,推荐下载exe直接安装 PIL官网:http://pythonware.com/products/pil/ 但现在里面下载链接访问不了,我把32位和64位版本上传到博客园以供下载 P ...
随机推荐
- 靶场练习-Sqli-labs通关记录(1-4关)
0x00 实验环境 本地:Win 10 靶场:sqli-labs(共65关,每日一关) 0x02 通关记录 简介:一天一关! (1)第一关: 简单的 ...
- WPF 基础 - DataTemplate
如果把控件的功能视为内容,则可以使用控件模板 ControlTemplate 来控制它的展现: 如果把数据视为内容,则可以使用数据模板 DataTemplate 把数据展示出来: ControlTem ...
- 解析Wide Residual Networks
Wide Residual Networks (WRNs)是2016年被提出的基于扩展通道数学习机制的卷积神经网络.对深度卷积神经网络有了解的应该知道随着网络越深性能越好,但是训练深度卷积神经网络存在 ...
- PTA 统计二叉树度为2的结点个数
6-4 统计二叉树度为2的结点个数 (11 分) 本题要求实现一个函数,可统计二叉树中度为2的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针, ...
- crackme001
最近在学习C语言的语法,今天因为早上起来得太早,导致一整天状态都不是很好,索性就没有继续,就拿了个最简单的crackme练练手 首先跑一下程序,看下报错 PE查壳,发现是一个啥子delphi的东西,没 ...
- Manjaro Linux平台用pyinstaller打包python可执行文件
技术背景 当我们创建一个python项目,最终的成果如果希望用户能够不依赖于python源代码也能够正常的执行,就会比较的人性化.因为源代码数量众多,很难让每个用户都自行管理所有的源代码,因此我们需要 ...
- Android 系统开发做什么?
题外话 18 年我从 Android 应用开发转 Framework 层开发了,从此开启了 996 幸福生活,博客技术文更新基本停滞了,被工作占据了过多的精力,实在没时间像以前一样拟稿.写作,实践.反 ...
- Oment++ 初学者教程 第4节-将其转变为真实网络
4.1两个以上的节点 现在,我们将迈出一大步:创建几个tic模块并将它们连接到网络中.现在,我们将使它们的工作变得简单:一个节点生成一条消息,其他节点继续沿随机方向扔消息,直到它到达预定的目标节点为止 ...
- 可读性友好的JavaScript:两个专家的故事
每个人都想成为专家,但什么才是专家呢?这些年来,我见过两种被称为"专家"的人.专家一是指对语言中的每一个工具都了如指掌的人,而且无论是否有帮助,都一定要用好每一点.专家二也知道每一 ...
- Unity 渲染流水线 :CPU与GPU合作创造的艺术wfd
前言 对于Unity渲染流程的理解可以帮助我们更好对Unity场景进行性能消耗的分析,进而更好的提升场景渲染的效率,最后提升游戏整体的性能表现 Unity的游戏画面的最终的呈现是由CPU与GPU相互配 ...