简单利用opencv制作小视频-以b站某视频为例

(咳咳)代码之前

清晨,美妙的冷空气一口口的,昨天下了场大雨,往日可以吃西瓜的温度瞬间就降下来了。晚上睡觉那怎一个凉凉了得。。

简单利用opencv制作小视频-以b站某视频为例_第1张图片

早上起床是不可能的起床的,只能靠窝在被子里看点视频勉强维持下温度

出来吧,我的b站!

简单利用opencv制作小视频-以b站某视频为例_第2张图片
b站好有趣哦,里面的人个个都是人才,说话又好听,视频又有趣,我超喜欢这里

简单利用opencv制作小视频-以b站某视频为例_第3张图片
看着看着一条弹幕全是‘哈哈哈哈哈’‘哈哈哈哈’‘哈哈哈’的视频进入了我的世界

简单利用opencv制作小视频-以b站某视频为例_第4张图片
视频链接直达:欧美版水浒人物

这样的视频怎么用代码做出来呢?

有没有方便快捷,仅需图片就能制作出来的呢?

有的!有的!他就在这里!

(噗)代码:

这种将图片一张张显示的幻灯片模式视频,不到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、背景图片:

简单利用opencv制作小视频-以b站某视频为例_第5张图片
2、移动图片们
简单利用opencv制作小视频-以b站某视频为例_第6张图片
制作完之后效果预览

ok啦~ 谢谢观看~

你可能感兴趣的:(OpenCV从入门到。。。)