最近产品有了一个天才的想法,做一个影集类似的功能,前面用图片制作影像、合成音频的操作都还挺顺利,但是到了给视频添加特效的时候就遇到了困难。
以前使用Pr或绘声绘影的时候就在想,这些软件背后的代码是什么样的呢?看来这一次我自己也可以亲手体验一番了。
这次主要遇到了两个问题:
- 在图片间插入过场动画 (这一篇将不会讲到这个)
- 在视频开头添加一个半透明的几何图案
图片合成
Google了一大票答案,很容易得出答案,OpenCV提供了
图一 ( 4032 x 1884 )
图二 ( 1126 x 1122 )
1 | # video.py |
运行一下,呀,报错了
1 | Traceback (most recent call last): |
通过报错信息,得知待合成图片的尺寸和
修改图片尺寸
修改一下上面的代码,使它变成
1 | # video.py |
成品
view.jpg ( 1126 x 1122 )
带Alpha通道的图片和普通照片的合成
合成完图片后,产品站在我身后,推了推眼镜,发现事情并不简单。
“给你一个框,给我放到图片里去”
背景实际上是透明的,这个黑色是在CSS中添加的,方便显示
我琢磨着,两张图的尺寸相同应该就能合成成一张图了吧!但是正如上文所提到的,图片中的通道数和也必须要一致才能调用
1 | # video.py |
由于通道不相等,两张图片并不能合成为一张图片,我们可以
- 去掉blank的alpha通道
- 为view1增加一条alpha通道
这里,我选择的是第二种方法
1 | # video.py |
成品