一、功能
将一个现实中的人物视频,让视频变成动漫的风格
二、实现原理
基于github上的图片动漫化ai项目,其不支持图片,所以我通过将视频拆分为大量的图片,然后将图片全部转换为动漫图片,最后将所有的图片进行合并,即可间接将视频进行动漫化
三、操作方法
1、你需要学会怎么将视频拆分为图片,以及怎么将图片合并为视频,可参考我的文章:视频拆分为图片、图片合并为视频(带声音)
2、你需要有我的python脚本,本文会给出
点击查看代码
import os
import requests,json,base64,urllib3,time,re,os
source_path=r"C:\Users\painter\Desktop\视频拆分图片-图片合并成视频\output\\" #这里是待动漫化处理的图片路径
filenames=os.listdir(source_path)
for filename in filenames: #获取每一张图片的文件名
try:
ext = filename.split('.')[1]
with open(source_path+filename,"rb") as f:
tupian=f.read()
# print(tupian)
tupian="data:image/{};base64,".format(ext)+base64.b64encode(tupian).decode()
# print(tupian)
proxy={"http://":"127.0.0.1:8080","https://":"127.0.0.1:8080"}
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36',
'Sec-Ch-Ua-Platform': "Windows",
'Content-Type': 'application/json',
'Origin': 'https://hf.space',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Referer': 'https://hf.space/gradioiframe/akhaliq/AnimeGANv2/+'}
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
r = requests.post(url='https://hf.space/gradioiframe/akhaliq/AnimeGANv2/api/queue/push/',headers=headers,json={"data": [tupian,"version 2 (\ud83d\udd3a robustness,\ud83d\udd3b stylizatior)"],"action":"predict"},verify=False)
hash=r.json()["hash"]
hash={"hash":hash}
time.sleep(7)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
req=requests.post(url="https://hf.space/gradioiframe/akhaliq/AnimeGANv2/api/queue/status/",headers=headers,json=hash,verify=False)
# print(req.json())
# urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# req1=requests.post(url="https://hf.space/gradioiframe/akhaliq/AnimeGANv2/api/queue/status/",headers=headers,json=hash,verify=False)
img=req.json()["data"]["data"][0].replace("data:image/png;base64,","")
img=base64.b64decode(img)
# base64.b64encode(tupian).decode()
# print(img)
#写入处理好的动漫图片,将其写入到原来的原图片路径,为了节省空间,对原图片进行覆盖处理
with open(source_path+filename,"wb") as f:
f.write(img)
print("已完成:{}".format(filename))
# print(result)
except:
pass