文章目录

  • 读取视频
  • 转为字符
  • 动画

已经11月了,不知道还有没有人看华强买瓜。。。要把华强卖瓜做成字符视频,总共分为三步

  1. 读取视频
  2. 把每一帧转为字符画
  3. 把字符画表现出来

读取视频

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

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

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

效果如下,看到了如此亲切的画面,华强骑着他心爱的小摩托,背后原因让人暖心。

转为字符

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

#将图像宽度缩小至width
from itertools import product   #用于循环嵌套
def resizeImg(img,w,h=None):m,n = img.shapeif n<w:return imgif not h:h = int(m*w/n)im = np.zeros([h,w])rw,rh = n/w,m/h         #缩放比例dw,dh = int(rw),int(rh) #取均值的步长for i,j in product(range(h),range(w)):I,J = int(i*rh),int(j*rw)im[i,j] = np.mean(img[I:I+dh,J:J+dw])return im
# 测试一下
im = resizeImg(imgs[0],160)
plt.imshow(im)
plt.show()

效果如下,可以清晰地发现,华强变糊了,但这丝毫阻挡不了瓜老板的命运,背后原因让世界变暖。

接下来,就可以生成字符画了,所谓字符画,无非是将像素值映射成一个字符,下面选取的用于映射的字符为:▇圞國图囜ⒶⒷⒸB8&WMZO0QJX@%&jfoavunxr#t/|()1{}[]?-_+~<>i!lI;:,"^'. ^'. ,由密集到稀疏

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

完整代码

通过python绘制华强买瓜的字符画视频相关推荐

  1. 华强买瓜-梵高星空限定版

    文章目录 引言 效果展示 准备工作 具体步骤 业务逻辑 日志 转换风格 读取视频并保存每一帧 问题 引言 你这个模型, 它复现起来难吗? 我一水博客的, 能给你看复现不出来的算法? 效果展示 将梵高的 ...

  2. Python手撸机器学习系列(四):朴素贝叶斯(华强买瓜版)

    目录 一.原理 1.1 买瓜 1.2 算瓜 二.代码实现 三.参考文献 一.原理 1.1 买瓜 大家好,我叫刘华强.我现在手里有一堆西瓜,我希望通过观察我这一堆西瓜中好瓜的特征来总结出判断好瓜的标准, ...

  3. 『华强买瓜』奇袭好莱坞!Jupyter也能创建可交互仪表板啦!超全面的英语论文写作套路;神经辐射场NeRF工具包;前沿论文 | ShowMeAI资讯日报

  4. 小伙用Python爬取3000条B站视频,发现刘华强买瓜是这么火起来的!

    大家好,我是小五???? 最近B站这两个月,快被买瓜的刘华强屠版了,上一个这么火的人物,应该还是闪电五连鞭的马保国. 与之前的网络"审丑"视频不同,这次火的片段来自一部影视作品. ...

  5. python绘制穿山甲字符画视频:这喝汤多是一件美逝

    上次写了个华强买瓜字符视频的帖子,下面有人问如何保存,所以这次就写一个能将字符画视频保存下来的帖子,然而时不待我,华强纪元已经结束,现在是穿山甲的时代了. 首先读取视频,并转为字符.视频是从B站下载的 ...

  6. 刘华强买瓜是怎么火起来的?我用Python爬取了3000条B站视频才知道的!

    最近B站这两个月,快被买瓜的刘华强屠版了,上一个这么火的人物,应该还是闪电五连鞭的马保国. ​ ​ 与之前的网络"审丑"视频不同,这次火的片段来自一部影视作品. 孙红雷在2003年 ...

  7. 利用python做个字符画视频

    废话少说,先上成果 https://www.bilibili.com/video/BV1cC4y1p7Tz 某一帧 python字符画视频 视频分割 图片字符化 合成视频 视频分割 可以利用ffmpe ...

  8. python制作字符画视频来啦~

    字符画是什么? 字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感. 如果我们想要手工绘制出字符画,首先要有 ...

  9. python动态图片转字符画_使用python实现一个将图片转换成字符画的功能

    使用python实现一个将图片转换成字符画的功能 发布时间:2020-11-05 16:01:25 来源:亿速云 阅读:97 使用python实现一个将图片转换成字符画的功能?针对这个问题,这篇文章详 ...

最新文章

  1. python求偏导_python实现点位精度评定
  2. python经典好书-有哪些 Python 经典书籍?
  3. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
  4. 在Ubuntu 18.04 LTS 入门 ROS Melodic 机器人 操作系统
  5. 聚簇索引和非聚簇索引的区别_学习索引的一些总结
  6. 浅谈 NLP 细粒度情感分析(ABSA)
  7. webStorm部分以及重要快捷键
  8. 转-ios设备唯一标识获取策略
  9. YII2 搭建redis拓展(教程)
  10. 读书笔记——《解析卷积神经网络 ——深度学习实践手册(魏秀参)》
  11. Google地图3D城市模型下载最新实践
  12. 计算机网络对英语教学的消极影响,浅谈计算机对英语写作和教学的影响
  13. 苹果唯冠邮件背后的隐情
  14. error:control reaches end of non-void function [-Werror=return-type]
  15. illegal TFTP operation
  16. SQL函数StDev与StDevP区别
  17. 保险保费基本计算规则
  18. 网络基础——牛客网刷题第一波
  19. 电脑钢琴模拟器——Flash版(附曲谱)
  20. MySQL基础命令及练习题(一)

热门文章

  1. 【年终糖果计划】跟风领一波糖果 candy.one 领取教程 (已失效)
  2. python 百分号使用
  3. C#控件及常用设计整
  4. 高德地图规划路线,并显示该路线的坐标
  5. IUNI U3 新时代的手机皇
  6. c语言readline库6,GNU Readline Library编译及简单分析
  7. ensp QinQ的配置
  8. 云呐|IT运维管理主要是做什么?it企业运维管理服务
  9. Web前端基础——jQuery(三)
  10. 【图解二叉树】如何用中序遍历一棵二叉树?(三种解法)