爆肝!用Python制作抖音爆款视频!

Python016

爆肝!用Python制作抖音爆款视频!,第1张

前几天我在抖音上刷到一个慢慢变老的视频,播放量居然有 30W+,当时就在想这视频 Python 可不可以做?经过一番搜索,我找到了腾讯云的人脸年龄变化 API,上面介绍说只要用户上传一张人脸图片,基于人脸编辑与生成算法,就可以输出一张人脸变老或变年轻的图片,并支持实现人脸不同年龄的变化。

第一步,在注册账号之后,打开 API 密钥管理页面( https://console.cloud.tencent.com/cam/capi )获取到 SecretId 和 SecretKey。

第二步,安装腾讯云的 SDK

在人脸年龄变化 API 中有一个 AgeInfo 参数,它包含了 Age 和 FaceRect 两个属性,其中 FaceRect 属性必须填人脸在照片中基于左上角的 X、Y 坐标和人脸的高度与宽度。所以先要调用人脸检测与分析 API 得到这些数据。

下面的示例图是在百度图片中截取的。

示例结果

在上面已经得到了各个人脸的 X、Y、Width、Height 属性,加上变老的年龄 Age,就可以请求年龄变化 API 了。

这里需要注意的是 models 模块,人脸检测 models 模块是在 tencentcloud.iai.v20200303 包下,人脸年龄变化的 models 是在 tencentcloud.ft.v20200304 下,两个 models 模块并不兼容。

示例结果

最后的视频可以将图片一张一张插入 PPT 幻灯片,点击保存为视频。

用 Python 制作抖音素材,下一个 30W+ 播放量等着你。

import sys

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()

fig.set_tight_layout(True)

# 询问图形在屏幕上的大小和DPI(每英寸点数)

# 注意当把图形保存为文件时,需要为此单独再提供一个DPI

print('fig size: {0} DPI, size in inches {1}'.format(

 fig.get_dpi(), fig.get_size_inches()))

# 绘制一个保持不变(不会被重新绘制)的散点图以及初始直线

x = np.arange(0, 20, 0.1)

ax.scatter(x, x + np.random.normal(0, 3.0, len(x)))

line, = ax.plot(x, x - 5, 'r-', linewidth=2)

def update(i):

 label = 'timestep {0}'.format(i)

 print(label)

# 更新直线和轴(用一个新X轴标签)

 # 以元组形式返回这一帧需要重新绘制的物体

 line.set_ydata(x - 5 + i)

 ax.set_xlabel(label)

 return line, ax

if __name__ == '__main__':

 # 会为每一帧调用Update函数

 # 这里FunAnimation设置一个10帧动画,每帧间隔200ms

 anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)

 if len(sys.argv) > 1 and sys.argv[1] == 'save':

  anim.save('line.gif', dpi=80, writer='imagemagick')

 else:

  # Plt.show()会一直循环动画

  plt.show()

可以生成下面这种图

1、打开sublime text 3,新建一个PY文件。

2、import os,因为涉及到系统文件路径的原因,我们这里先导入系统模块。

3、html = open("E:\\Download\\new\\new.html", "w"),创建变量,然后设置文件名字,注意用w写方式来进行,这样就会创建一个新的HTML文件。

4、html.write("<!DOCtype HTML>\

  \n<head><title>新的网页</title></head>\

  \n<body><h1>大家好啊</h1></body>")

这个时候就可以写入相关的HTML代码了。

5、这个时候可以双击打开HTML文件,那么就可以看到书写的网页了。

6、然后加上html.close(),记得加上这行代码来关闭,不然会占用很多内存,这样就完成了。