【AI】视频动漫化

一、功能

将一个现实中的人物视频,让视频变成动漫的风格

二、实现原理

基于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

四、效果视频

posted @ 2022-02-27 09:22  painter520  阅读(1702)  评论(2编辑  收藏  举报