Python制作动态字符画的源码

作者:松鼠爱吃饼干 时间:2022-11-18 09:13:48 

字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物、事物等形象,它一般由人工制作而成;复杂的字符画通常利用占用不同数量像素的字符代替图画上不同明暗的点,它一般由程序制作而成。字符画是互联网时代的产物,通常应用于即时聊天中。

首先,也是最重要的,先放源码


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制作动态字符画的源码

来源:https://www.cnblogs.com/qshhl/p/15084578.html

标签:Python,字符画
0
投稿

猜你喜欢

  • 修改新云CMS底部版权信息字数限制

    2008-07-31 18:00:00
  • YUI3新特性学习

    2012-04-26 16:25:20
  • python中模块的__all__属性详解

    2022-10-16 08:59:18
  • Python决策树和随机森林算法实例详解

    2021-12-15 21:44:24
  • 用python编写一个图片拼接工具

    2023-09-01 18:31:52
  • python中requests爬去网页内容出现乱码问题解决方法介绍

    2023-09-14 01:00:11
  • 高考要来啦!用Python爬取历年高考数据并分析

    2021-06-10 04:08:25
  • SQLServer中的切割字符串SplitString函数

    2011-12-01 08:14:09
  • 常见系统中文字体的英文名

    2008-03-03 12:44:00
  • .NET中书写XML的一种简单方法

    2007-08-23 12:55:00
  • Python中BeautifulSoup模块详解

    2023-07-21 21:53:15
  • Go语言设计实现在任务栏里提醒你喝水的兔子

    2023-07-15 04:24:22
  • 说说CSS的优先权 考虑CSS的继承与层叠

    2008-12-11 13:33:00
  • Python编程OpenCV和Numpy图像处理库实现图片去水印

    2023-10-10 15:12:44
  • 搞定web设计中网页路径问题

    2007-09-22 08:52:00
  • 详解Python使用OpenCV如何确定一个对象的方向

    2022-04-06 04:16:42
  • python anaconda 安装 环境变量 升级 以及特殊库安装的方法

    2022-11-05 01:56:24
  • CSS Expression 的优化

    2009-09-24 13:27:00
  • YUI学习笔记(2)

    2009-01-21 16:11:00
  • css网页下拉菜单制作方法(4):定位问题

    2007-02-03 11:39:00
  • asp之家 网络编程 m.aspxhome.com