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获得linux下所有挂载点(mount points)的方法
Apr 29 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python中使用支持向量机SVM实践
Dec 27 Python
Python学生成绩管理系统简洁版
Apr 05 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
详解python中list的使用
Mar 15 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
python flask中动态URL规则详解
Nov 22 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效率,提高php性能的一些方法
2011/03/24 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
js加解密 脚本解密
2008/02/22 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
angular 服务随记小结
2019/05/06 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
python pdb调试方法分享
2014/01/21 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python map及filter函数使用方法解析
2020/08/06 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
《满井游记》教学反思
2014/02/26 职场文书
亲子活动总结
2014/04/26 职场文书
财务负责人任命书
2014/06/06 职场文书
文明礼仪标语
2014/06/13 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL