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中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
python实现图像全景拼接
Mar 27 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
关于Python解包知识点总结
May 05 Python
Python 爬虫的原理
Jul 30 Python
详解Python流程控制语句
Oct 28 Python
Django框架请求生命周期实现原理
Nov 13 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
php使用google地图应用实例
2014/12/31 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
简单了解python PEP的一些知识
2019/07/13 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
Python几种常见算法汇总
2020/06/02 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
python中xlutils库用法浅析
2020/12/29 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
应用艺术毕业生的自我评价
2013/12/04 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
教师求职信范文
2014/05/24 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
七年级思品教学反思
2016/02/20 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python