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局部赋值的规则
Mar 07 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
django中SMTP发送邮件配置详解
Jul 19 Python
Python性能分析工具Profile使用实例
Nov 19 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
pyqt5中动画的使用详解
Apr 01 Python
Python中的xlrd模块使用原理解析
May 21 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
python tkinter界面居中显示的方法
2018/10/11 Python
python3实现逐字输出的方法
2019/01/23 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
设置器与访问器的定义以及各自特点
2016/01/08 面试题
庆元旦迎新年广播稿
2014/02/18 职场文书
业务员简历自我评价
2014/03/06 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年电厂工作总结
2014/12/04 职场文书
婚礼新人答谢词
2015/01/04 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
同意报考证明
2015/06/17 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
话题作文之学会尊重
2019/12/16 职场文书