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持久性管理pickle模块详细介绍
Feb 18 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
如何使用python操作vmware
Jul 27 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
python pip如何手动安装二进制包
Sep 30 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
Python命令行参数定义及需要注意的地方
Nov 30 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP多例模式介绍
2013/06/24 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
5 cool javascript apps
2007/03/24 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
python之import机制详解
2014/07/03 Python
python继承和抽象类的实现方法
2015/01/14 Python
Android分包MultiDex策略详解
2017/10/30 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
公司出纳岗位职责
2013/12/07 职场文书
开办化妆品公司创业计划书
2013/12/26 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
龙门石窟导游词
2015/02/02 职场文书
经费申请报告范文
2015/05/18 职场文书
法律意见书范文
2015/05/20 职场文书
校运会加油稿大全
2015/07/22 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
python如何读取.mtx文件
2021/04/22 Python