先放出本人在B站投稿的视频:http://www.bilibili.com/video/av3842032/
《Bad Apple!!》原是东方旧五作中东方幻想乡里的一个BGM,但现在更多的是指一个在二次元界妇孺皆知的黑白影绘视频同人作品。只有黑白两色的特性,使其能够在各种屏幕上播放而不失味道,由此引出各路大神各种二次创作,“有屏的地方就有Bad Apple”这句话也是因此得来。
我倒不是什么大神哈,寒假回家带回了一堆材料,Bad Apple 12864版 也是想完成的作品之一,下面就按照整个作品完成的过程,仔细的介绍一下吧~
目录:
获取视频
下载B站视频很简单,只要在视频链接的bilibili之前加i,即可进入下载界面:
【東方】Bad Apple!! PV【影絵】
原视频:http://www.bilibili.com/video/av706/
下载链接:http://www.ibilibili.com/video/av706/
截取图像
要完成这个作品,其实可以有很多种方式,比如可以编写上位机程序,播放视频同时实时截取视频图像,再传输给单片机。例如这里有个少年,水平不知道比我高到哪里去… 我跟他谈笑风生。 或者可以像我这样,使用截取每一帧图像再传送显示的方法实现。这样上位机的程序会简单很多啦(主要是水平不够=。=嘘…)
考虑到串口传输的速度以及液晶屏的刷新速度,选择了10FPS,也就是每秒10帧。那么是不是要手动每隔0.1秒截一张图呢?必然不需要,貌似也做不到。这里可以用到kmplayer或者potplayer,身边的朋友应该都被我安利过这两款播放器了,个人感觉功能齐全、界面简洁、十分好用。实际上后者的作者也是前者作者之一,所以这两个软件基本相同。
用上述软件打开视频后点击ctrl+G
就会出现连续截取画面的对话框:
选定保存位置、命名方式、文件格式、尺寸、截图方式之后,点击开始,然后再开始播放视频,播放器就会自动开始截图了。
按照每秒10帧,视频总长3:39,最终得到2188张512×384的原始图片。
处理图像
大小调整
12864之所以被称为12864,就是说它的分辨率是128×64,因此还需要把原始图片处理成这个分辨率的图片。另外可以看到原视频是4:3的比例,而12864是2:1的比例,因此又有了比例不同的问题。三个解决方法,一个是拉伸;一个是就着宽度,截去上下两节;最后一种就是就着高度,两边留白。
作为重度强迫症患者,前两种自然不会采取,故使用PS将原图片处理成如下效果:
主要过程:转换成灰度模式→转换成位图模式→用128*64尺寸裁剪
当然两千多张图片肯定要批处理的。在PS里录制上述过程成为动作,然后就可以批量处理啦~具体过程这里就不缩了。
转换成数据文件
最终给单片机的数据是一连串的1和0,所以要得到代表图片内容的二进制的文件。这一步通常由图片取模软件实现,但是没找到能够批量处理的软件,干脆拿matlab写一个了。
之前已经得到了原视频位图模式的每一帧,而所谓位图,就是只有黑白两种颜色并且没有灰度区分的图片,也就是已经是1和0构成的图片了。在用matlab读取这样的图片时,直接就是一个1和0的矩阵了。然后将这个矩阵的数据按每八位一个字节看做一个数据(串口一次传一字节),存入二进制文件*.bin
中。
废话不多说上代码: