本篇文章小编给大家分享一下Python制作动态字符画代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物、事物等形象,它一般由人工制作而成;复杂的字符画通常利用占用不同数量像素的字符代替图画上不同明暗的点,它一般由程序制作而成。字符画是互联网时代的产物,通常应用于即时聊天中。
首先,也是最重要的,先放源码
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 + 'rn' 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:UsersAdministratorDesktop油性极大.mp4')
然后,选择一个短视频
最后选择视频的路径,修改代码的文件路径,在运行代码
太极熊猫2百度版 安卓版v1.7.1
下载黎明觉醒应用宝版 安卓版v1.111.1
下载暗影格斗3国际版 (Shadow Fight 3)最新版v1.40.3
下载王者战魂华为版 安卓版v3.6.1
下载放置魔法学院免广告版 v2.9.5
放置魔法学院内置Mod菜单是游戏的破解版本,在该版本中为玩家
万乘之国qq版本 安卓版v1.0.5
万乘之国qq版本是一款极具魅力的策略游戏,玩家们可以通过不同
动物餐厅国际服无限内购版 v12.9
动物餐厅国际服免广告版是游戏的破解版本,在该版本中为玩家去除
欧洲卡车司机 安卓版v3.2
欧洲卡车司机是款模拟经营游戏,这款游戏的画面还是蛮逼真的,给
疯狂大酒店 (Grand Hotel Mania)最新中文版v4.10.0.20
疯狂大酒店(Grand Hotel Mania)是一款好玩的