(咳咳)代码之前
清晨,美妙的冷空气一口口的,昨天下了场大雨,往日可以吃西瓜的温度瞬间就降下来了。晚上睡觉那怎一个凉凉了得。。
早上起床是不可能的起床的,只能靠窝在被子里看点视频勉强维持下温度
出来吧,我的b站!
b站好有趣哦,里面的人个个都是人才,说话又好听,视频又有趣,我超喜欢这里
看着看着一条弹幕全是‘哈哈哈哈哈’‘哈哈哈哈’‘哈哈哈’的视频进入了我的世界
视频链接直达:欧美版水浒人物
这样的视频怎么用代码做出来呢?
有没有方便快捷,仅需图片就能制作出来的呢?
有的!有的!他就在这里!
(噗)代码:
这种将图片一张张显示的幻灯片模式视频,不到50行代码就能实现。
1、所需库
opencv-python
2、实现原理
将每张图片从右到左一张张移动过去。。。
3、代码
以下代码仅需改变将代码中的各种参数设置为你自己所需要的就可以运行。
当然还需要有图片啊喂
其他的就没什么需要讲解的了,直接上代码。
# coding=utf-8
import cv2 as cv
import os
folderPath = 'C:/Users/11037/Desktop/test/' #处理图片的路径
bgImgPath = 'C:/Users/11037/Desktop/bgtupian.jpg' #背景图片路径
savePath = 'C:/Users/11037/Desktop/endvideo.mp4' #视频保存路径
videosize = (400,650) #视频宽度和高度
fps = 30 #视频帧率
speed = 2 #视频移动速度
def main():
fourcc = cv.VideoWriter_fourcc(*'mp4v')
piclist = os.listdir(folderPath)
bgImg = cv.imread(bgImgPath)
rebgImg = cv.resize(bgImg,videosize) #将背景图片改为视频大小
videowriter = cv.VideoWriter(savePath, fourcc, 30, videosize)
picnum = len(piclist) #获取图片数量
print('视频制作开始~')
for i in range(picnum):
tmpbg = rebgImg.copy()
nowpicpath = folderPath + str(piclist[i])
if i!=picnum-1:
nextpicpath = folderPath + str(piclist[i+1])
nowImg = cv.imread(nowpicpath)
height,weight,c = nowImg.shape
nowImg = cv.resize(nowImg,(videosize[0],videosize[0]*height//weight)) #将图片改为适应视频的大小,使图片宽度和视频宽度一致
nextImg = cv.imread(nextpicpath)
height, weight, c = nextImg.shape
nextImg = cv.resize(nextImg,(videosize[0],videosize[0]*height//weight)) #同上
midline = videosize[1]//2
nowh, noww, c1 = nowImg.shape
nexth,nextw,c2 = nextImg.shape
t = 0
while(t<=videosize[0]):
nowbg = tmpbg.copy()
nowbg[midline - nowh // 2:midline - nowh // 2 + nowh, 0:videosize[0]-t] = nowImg[:,t:] #将现在的照片左移
nowbg[midline - nexth//2:midline - nexth // 2 + nexth,videosize[0]-t:] = nextImg[:,:t] #将下一张照片左移
t += speed
videowriter.write(nowbg)
print('视频制作成功啦~')
if __name__ == '__main__':
main()
我用的图片们:
1、背景图片:
2、移动图片们
制作完之后效果预览:
ok啦~ 谢谢观看~