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实现socket客户端和服务端简单示例
Feb 24 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
May 29 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
在IPython中执行Python程序文件的示例
Nov 01 Python
Python3.5装饰器典型案例分析
Apr 30 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
对Python获取屏幕截图的4种方法详解
Aug 27 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
解决python运行启动报错问题
Jun 01 Python
python快速安装OpenCV的步骤记录
Feb 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之变量、常量学习笔记
2008/03/27 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php实例分享之二维数组排序
2014/05/15 PHP
实现PHP搜索加分页
2016/10/12 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
Python中的进程分支fork和exec详解
2015/04/11 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
python @property的用法及含义全面解析
2018/02/01 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
临床医学应届生求职信
2013/11/06 职场文书
小学科学教学反思
2014/01/26 职场文书
计算机实训报告范文
2014/11/05 职场文书
2014年接待工作总结
2014/11/26 职场文书
市场部岗位职责
2015/02/12 职场文书