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 05 Python
python中字典(Dictionary)用法实例详解
May 30 Python
python转换字符串为摩尔斯电码的方法
Jul 06 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
python接口自动化(十六)--参数关联接口后传(详解)
Apr 16 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
解决pycharm同一目录下无法import其他文件
Feb 12 Python
Python日志logging模块功能与用法详解
Apr 09 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python为何不支持switch语句原理详解
Oct 21 Python
Pytorch 如何实现LSTM时间序列预测
May 17 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php上传文件的增强函数
2010/07/21 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python中使用logging模块打印log日志详解
2015/04/05 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Django中Model的使用方法教程
2018/03/07 Python
简单实现Python爬取网络图片
2018/04/01 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
财务总监岗位职责
2014/03/07 职场文书
抽样调查项目计划书
2014/04/24 职场文书
个人委托书范本汇总
2014/10/01 职场文书
会计师事务所实习证明
2014/11/16 职场文书
大学生英文求职信范文
2015/03/19 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis