(咳咳)代碼之前
清晨,美妙的冷空氣一口口的,昨天下了場大雨,往日可以喫西瓜的溫度瞬間就降下來了。晚上睡覺那怎一個涼涼了得。。
早上起牀是不可能的起牀的,只能靠窩在被子裏看點視頻勉強維持下溫度
出來吧,我的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啦~ 謝謝觀看~