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 09 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
python使用turtle库绘制树
Jun 25 Python
Python tkinter的grid布局及Text动态显示方法
Oct 11 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
Python画图高斯分布的示例
Jul 10 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
python实现简单遗传算法
Sep 18 Python
python中pyqtgraph知识点总结
Jan 26 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
世界收音机发展史
2021/03/01 无线电
PHP邮件专题
2006/10/09 PHP
php去除HTML标签实例
2013/11/06 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
Python脚本实现格式化css文件
2015/04/08 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python生成ppt的方法
2018/06/07 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
如何基于线程池提升request模块效率
2020/04/18 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
惠普香港官方商店:HP香港
2019/04/30 全球购物
绿色环保标语
2014/06/12 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL