动态舞蹈舞动词云图跳跃舞蹈词云视频合成制作 自定义视频素材
制作代码自行记录日记(以防日久忘记):
篇一:下载视频素材
you-get 视频网址
篇二:解析视频并分割转化成图片
import cv2
import os
# 视频转图片
vc = cv2.VideoCapture('C:\\Users\\asus\\Desktop\\rewu1.mp4') # 读取视频文件
c=0
n=1
f=3
if vc.isOpened():
rval,frame = vc.read()# 读取视频帧
else:
rval=False
while rval:
rval,frame = vc.read()# 读取每一视频帧,并保存至图片中
if (n % f == 0):
c += 1
cv2.imwrite(os.path.join
('C:\\Users\\asus\\Desktop\\rewu\\','{}.jpg'.format(c)),frame)
print('第 {} 张图片存放成功!'.format(c))
n+=1
篇三:分割的图片再次转化成白底黑图并保存
from aip import AipBodyAnalysis
import os
import cv2
from stylecloud import gen_stylecloud
import numpy as np
from PIL import Image
from jieba import cut,load_userdict
import base64
APP_ID = ""
API_KEY = ''
SECRET_KEY = ''
jpg_path='C:\\Users\\asus\\Desktop\\rewu'
save_path='C:\\Users\\asus\\Desktop\\rewushow'
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
for num in range(28,687):
img_files = jpg_path+'\\{}.jpg'.format(num)
img = cv2.imread(img_files) # 获取图像尺寸
height, width, _ = img.shape
with open(img_files, 'rb') as f:
img_info = f.read()
#设置只返回前景分割出来的人像
seg_res = client.bodySeg(img_info)
labelmap = base64.b64decode(seg_res['labelmap'])
nparr = np.frombuffer(labelmap, np.uint8)
labelimg = cv2.imdecode(nparr, 1)
labelimg = cv2.resize(labelimg, (width, height), interpolation=cv2.INTER_NEAREST)
new_img = np.where(labelimg == 1, 255, labelimg)
mask_name = '{}.png'.format(num)
# 保存分割出来的人像
cv2.imwrite(save_path+'\\'+mask_name, new_img)
print('第{num}张图像分割完成')
篇四:生成词云图并保存
# 自动分词制作
filepath='英文励志短文.txt' # txt文本完整路径地址
#te=load_userdict(filepath) # 按照自定义txt文本分词
# 读取txt文本内容
# 自动分词制作
te=load_userdict(filepath) # 按照自定义txt文本分词
# 读取txt文本内容
with open(filepath,'r',encoding='utf-8') as f:
txtword=f.read()
# 直接用jieba自动分词,cut_all=True全模式分词,cut_all=False精确模式分词
word_list = cut(txtword, cut_all=False)
result = " ".join(word_list)
save_path='C:\\Users\\asus\\Desktop\\rewushow'
for n in range(38,687):
img_file =save_path+'\\{}.png'.format(n)
background = 255- np.array(Image.open(img_file))
# 制作词云图
gen_stylecloud(
text=result,
size=1500, # (词云图尺寸大小)
scale=1,
prefer_horizontal=0.8, # 定义横竖比例
font_path='力黑常规体.otf',
background_color='#000000',# (词云图背景颜色)
mode="RGB",
repeat=True,
output_name=save_path+'\\{}.png'.format(n), # (词云图输出存放地址)
)
print('{}.png'.format(n),'词云图绘制成功!')
篇五:图片转视频
import numpy as np
import cv2
import os
# 1.每张图像大小
size = (1280,720)
print("每张图片的大小为({},{})".format(size[0],size[1]))
# 2.设置源路径与保存路径
src_path = r'C:\\Users\\asus\\Desktop\\rewushow\\'
sav_path = r'C:/Users/asus/Desktop/视频.mp4'
# 3.获取图片总的个数
all_files = os.listdir(src_path)
index = len(all_files)
print("图片总数为:" + str(index) + "张")
# 4.设置视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')#MP4格式
#完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息
videowrite = cv2.VideoWriter(sav_path,fourcc,10,size)#2是每秒的帧数,size是图片尺寸
# 5.临时存放图片的数组
img_array=[]
# 6.读取所有png格式的图片
for i in range(38,685):
img = cv2.imread(src_path+'\\{}.png'.format(i))
if img is None:
print('{}.png'.format(i) + " is error!")
continue
img_array.append(img)
# 7.合成视频
for i in range(0,647):
img_array[i] = cv2.resize(img_array[i],(1280,720))
videowrite.write(img_array[i])
print('第{}张图片合成成功'.format(i))
print('------视频合成!!!-------')
篇六:音频合成
用自己制作的CYSRUN音视频剪辑软件直接合成,搞定!
题外话:
部分代码没有标注解释,因为是自己要看的,源码在自己电脑上,其实也和上面文中的大概一致,因为我也是从自己电脑上vscode软件中写好的源码复制粘贴过来的。这只是自己怕忘记了,做个记录,所以可能不适用一些小白直接复制粘贴去跑代码,因为其中有些参数需要更改,也没有做过多的解释,可能有些小白看不懂,仅是篇自己的日记记录而已。