Python制作动态字符画的源码


Posted in Python onAugust 04, 2021

字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物、事物等形象,它一般由人工制作而成;复杂的字符画通常利用占用不同数量像素的字符代替图画上不同明暗的点,它一般由程序制作而成。字符画是互联网时代的产物,通常应用于即时聊天中。

首先,也是最重要的,先放源码

from PIL import Image as im
from tkinter import *
import cv2
 
# 随便打
codeLib = '''*.1'''
count = len(codeLib)
 
 
def transform(image_file):
    codePic = ''
    for h in range(0, image_file.size[1]):
        for w in range(0, image_file.size[0]):
            g, r, b = image_file.getpixel((w, h))
            gray = int(r * 0.299 + g * 0.587 + b * 0.114)
            codePic = codePic + codeLib[int(((count - 1) * gray) / 256)]
        codePic = codePic + '\r\n'
    return codePic
 
 
def image2char(image_file):
    image_file = image_file.resize((int(image_file.size[0] * 0.16), int(image_file.size[1] * 0.06)))  # 调整图片大小
    return transform(image_file), image_file.size[0], image_file.size[1]
 
 
def frame2image(cap, i):
    cap.set(cv2.CAP_PROP_POS_FRAMES, i)
    _, b = cap.read()
    image = im.fromarray(cv2.cvtColor(b, cv2.COLOR_BGR2RGB))
    return image
 
 
def gui(path):
    cap = cv2.VideoCapture(path)
    root = Tk()
    t = frame2image(cap, 0)
    _, w, h = image2char(t)
    text = Text(root, width=w, height=h)
    text.pack()
    framenum = int(cap.get(7))
    for i in range(framenum):
        image = frame2image(cap, i)
        content, _, _ = image2char(image)
        text.insert(INSERT, content)
        root.update()
        text.delete(0.0, END)
 
 
if __name__ == '__main__':
    gui(r'C:\Users\Administrator\Desktop\油性极大.mp4')

然后,选择一个短视频

Python制作动态字符画的源码

最后选择视频的路径,修改代码的文件路径,在运行代码

Python制作动态字符画的源码

到此这篇关于Python制作动态字符画的源码的文章就介绍到这了,更多相关Python动态字符画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详细解析Python中的变量的数据类型
May 13 Python
Python Property属性的2种用法
Jun 21 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
Python3 中文文件读写方法
Jan 23 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
Python任务调度利器之APScheduler详解
Apr 02 Python
Pandas读取csv时如何设置列名
Jun 02 Python
Python OpenGL基本配置方式
May 20 Python
Python进行区间取值案例讲解
Aug 02 #Python
Python获取江苏疫情实时数据及爬虫分析
Django对接elasticsearch实现全文检索的示例代码
Aug 02 #Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 #Python
python数字转对应中文的方法总结
Aug 02 #Python
Python List remove()实例用法详解
Aug 02 #Python
Python中基础数据类型 set集合知识点总结
Aug 02 #Python
You might like
ADODB类使用
2006/11/25 PHP
PHP 图片上传代码
2011/09/13 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP的PDO连接讲解
2019/01/24 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
jquery解析JSON数据示例代码
2014/03/17 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
质量工程师岗位职责
2013/11/16 职场文书
yy生日主持词
2014/03/20 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
python spilt()分隔字符串的实现示例
2021/05/21 Python
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server