大家一定想不到,旗姐姐的科普专题还有续集。在开始之前,让我们先回顾一下之前的文章。
这次,旗姐姐来和大家一起研究一下视频的处理,让我们一起来把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 像素的小方块。如果方块内全部是黑色,我们就用一个大的滑稽图片把这一部分填满,如果这部分是白色的,就维持原样,用白色替换。
如果这一部分是黑白相间的,说明我们还要对这一部分更加细分。所以我们就把它分成四个小的正方形,对它们做相同的处理。直到正方形已经被分得很小为止。
相信细心的读者们已经发现(实际上并没有),这种处理方式可以很自然地用递归来处理。
具体处理图片的函数如下:
看完了这些,大家是不是觉得自己也滑稽起来了呢?
领取专属 10元无门槛券
私享最新 技术干货