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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
python实现excel读写数据
Mar 02 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python分数表示方式和写法
Jun 26 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
TensorFlow固化模型的实现操作
May 26 Python
python opencv肤色检测的实现示例
Dec 21 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
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
range 标准化之获取
2011/08/28 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
django定期执行任务(实例讲解)
2017/11/03 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
Python过滤序列元素的方法
2020/07/31 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
英语道歉信范文
2014/01/09 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
争先创优活动总结
2014/08/27 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
采购员岗位职责
2015/02/03 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
质检员岗位职责范本
2015/04/07 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
如何使用python包中的sched事件调度器
2022/04/30 Python