我从未见过如此滑稽的Bad Apple

大家一定想不到,旗姐姐的科普专题还有续集。在开始之前,让我们先回顾一下之前的文章。

这次,旗姐姐来和大家一起研究一下视频的处理,让我们一起来把badapple变得滑稽起来。

badapple原先是一部影绘作品,由于它只有黑白两色,识别起来比较简单,于是在各大视频网站上被改成各种不同的版本,在示波器,计算器,命令行,甚至是宿舍楼灯光上播放。被网友们称为“有屏幕的地方就有badapple”。

先放上几个大神做的视频:

https://www.bilibili.com/video/av14335457

https://www.bilibili.com/video/av22025475

https://www.bilibili.com/video/av3369085

https://www.bilibili.com/video/av7273813

https://www.bilibili.com/video/av1237960

估计大家看完这些就不会回来看旗姐姐了。。。

badapple原版视频下载地址:http://pan.baidu.com/share/link?shareid=329047&uk=689072820%20

老规矩,先来看效果。

原视频

滑稽处理后

1

视频的原理

想要了解视频,我们首先就要知道 视频里面的图片为什么会“动”。

物体在快速运动时, 当人眼所看到的影像消失后,人眼仍能继续保留其影像,这种现象被称为视觉暂留现象。这种效应就是是动画、电影等视觉媒体形成和传播的根据。

在观察高速运动的物体时,往往会看到“残影”。这就是视觉暂留现象的一个例子。

视频的本质,实际上就是很多幅图片。我们把图片很快地连续显示出来,由于我们的视觉暂留现象,在显示下一幅图片的时候,还会保留着上一幅图片的“残影”,这样我们看到的效果就是图片在“动起来”啦。

用手快速地翻书是“动起来”的一种最简单的方式。

在视频中,每次显示的图片叫做“帧”,每秒显示多少张图片叫做“帧率”(FPS)FPS越大,我们看到的视频就越流畅连贯。

人眼的视觉暂留时间大概在0.1-0.4秒左右,理论上只要每秒钟显示10张图片就可以。但是实际上为了我们看起来的流畅,视频的帧率一般是每秒24帧。

在我们玩游戏的时候,帧率是可以根据网速动态变化的。所以我们在网速比较慢的时候游戏会感觉“卡”。

2

如何处理视频

我们可以用python的imageio库来实现对视频的操作。imageio库可以读写视频(不包括里面的声音部分),视频会以图片数组的形式保存在变量里。

具体操作步骤就看代码吧。(代码里面的Huaji是一个处理图片的函数,具体戏界我们留到后面说明)

3

让视频滑稽起来

在最后的效果图里面可以看出,想要让视频滑稽起来,只要把里面黑色的部分用滑稽代替就可以了。

显然,黑色的部分是不规则的,如何用大小不同的滑稽把黑色的部分填满呢?

这里我们采用一种比较简单的方法。我们首先看到视频的分辨率是512x384的,所以我们先把它的每一帧分成 4x3=12 个 128x128 像素的小方块。如果方块内全部是黑色,我们就用一个大的滑稽图片把这一部分填满,如果这部分是白色的,就维持原样,用白色替换。

如果这一部分是黑白相间的,说明我们还要对这一部分更加细分。所以我们就把它分成四个小的正方形,对它们做相同的处理。直到正方形已经被分得很小为止。

相信细心的读者们已经发现(实际上并没有),这种处理方式可以很自然地用递归来处理。

具体处理图片的函数如下:

看完了这些,大家是不是觉得自己也滑稽起来了呢?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180915G1LTI700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券