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中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
深入理解python try异常处理机制
Jun 01 Python
Python的语言类型(详解)
Jun 24 Python
python实现决策树
Dec 21 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
pycharm 如何查看某一函数源码的快捷键
May 12 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
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python实现顺时针打印矩阵
2019/03/02 Python
python集合是否可变总结
2019/06/20 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
人力资源管理专业自荐书范文
2014/02/10 职场文书
大学学生个人总结
2015/02/15 职场文书
摩登时代观后感
2015/06/03 职场文书
七一表彰大会简报
2015/07/20 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Python何绘制带有背景色块的折线图
2022/04/23 Python