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 GAE、Django导出Excel的方法
Nov 24 Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
Python中获取网页状态码的两个方法
Nov 03 Python
python写入xml文件的方法
May 08 Python
Python实现遍历数据库并获取key的值
May 17 Python
python并发编程之线程实例解析
Dec 27 Python
Python实现查看系统启动项功能示例
May 10 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 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访问数据库集群的方法小结
2016/03/14 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python实现栈的方法
2015/05/26 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
python 阶乘累加和的实例
2019/02/01 Python
Python中if有多个条件处理方法
2020/02/26 Python
python中return如何写
2020/06/18 Python
Python csv文件记录流程代码解析
2020/07/16 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
国际会议邀请函范文
2014/01/16 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
项目负责人任命书
2014/06/04 职场文书
校园标语大全
2014/06/19 职场文书
2014年党总支工作总结
2014/12/18 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
首席执行官观后感
2015/06/03 职场文书
六一儿童节致辞
2015/07/31 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫