千家信息网

python绘制字符画视频的示例代码怎么写

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,读取视频通过imageio读取视频,除了pip install imageio之外,还需要pip install imageio-ffmpeg。由于视频中的图像都是彩色的,故而需要将rgb三色转为单一
千家信息网最后更新 2026年11月04日python绘制字符画视频的示例代码怎么写


读取视频

通过imageio读取视频,除了pip install imageio之外,还需要pip install imageio-ffmpeg。

由于视频中的图像都是彩色的,故而需要将rgb三色转为单一的强度,并将转化后的图像装入一个列表中。

import imageioimport numpy as npimport matplotlib.pyplot as pltvideo = imageio.get_reader('test.mp4')imgs = []for img in video:    imgs.append(np.mean(img,2))plt.imshow(imgs[0])plt.show()

转为字符

这个视频虽然已被压缩,但对于字符画而言还是太大了,所以转字符画之前需对其进一步压缩。这里采取最简单的方法--即对相邻的像素取平均值。

#将图像宽度缩小至widthfrom itertools import product   #用于循环嵌套def resizeImg(img,w,h=None):    m,n = img.shape    if n

接下来,就可以生成字符画了,所谓字符画,无非是将像素值映射成一个字符,方法非常简单

pixels = "▇圞國图囜ⒶⒷⒸB8&WMZO0QJX@%&jfoavunxr#t/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ^`'. " #用于映射的字符def im2txt(img):    im = np.floor(img/255*len(pixels)).astype(int)    txts = ""    for line in im:        txts += "".join([pixels[i] for i in line])        txts += '\r\n'    #像素换行时文本也要换行    return txts#测试txt = im2txt(im)print(txt)

结果如下

动画

让命令行绘制字符视频,听上去可能有些不可思议,但这个功能可以仅凭python内置的模块实现--即curses,唯一可惜的是,Windows下的Python并不内置这个模块,需要额外安装。

先下载和自己python版本相符的curses,然后通过pip命令安装

>pip install "curses-2.2.1+utf8-cp310-cp310-win_amd64.whl"

然后就可以在python中调用了。由于视频太大,所以这里只演示一小段,效果如下

主程序的代码如下

if __name__ == "__main__":    video = imageio.get_reader('test.mp4')    txts = []    # 生成字符画    for img in video:        im = resizeImg(np.mean(img,2),120,30)        txts.append(im2txt(im))    # 初始化屏幕    scr = curses.initscr()    scr.timeout(40)     #每次等待键盘输入的时间为40ms    #scr.    for txt in cycle(txts):        scr.addstr(0,0,txt)        scr.border(0)        scr.refresh()        #curses.delay_output(25)        if scr.getch()==27: #如果按下`esc`则退出`            break


字符 视频 像素 图像 命令 均值 方法 模块 测试 生成 代码 不可思议 接下来 主程序 功能 动画 宽度 屏幕 强度 彩色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 上海睿民互联网科技有限公司 互联网扶贫科技 互联网科技媒体 极限挑战互联网科技 碳银互联网科技有限公司 新华互联网科技校企合作 北京三清互联网科技 华服互联网科技官网 互联网校园科技培训 语蝶互联网科技有限公司 新兴科技互联网创新大赛颁奖典礼 恒生互联网科技指数跳水 互联网金融科技名词解释 恒生互联网科技业指数调整周期 宇信科技在杭州互联网排第几 九思连强互联网电子科技有限公司 互联网科技平台产品运营 互联网科技企业文化 如何强化互联网金融科技 互联网下的科技发展 上海致骋互联网科技 亿人帮互联网科技 重庆威客帮互联网科技 长沙茂晟互联网科技有限公司 科技大学互联网 广州三三互联网科技有限公司 杭州科技互联网公司有哪些 东风日产互联网科技公司叫什么 广州全民伙伴互联网科技有限公司
0