一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧

这篇具有很好参考价值的文章主要介绍了一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近几个月,毒教材被曝光引发争议,那些编写度教材的人着实可恶。咱程序员也没有手绘插画能力,但咱可以借助强大的深度学习模型将视频转动漫。所以今天的目标是让任何具有python语言基本能力的程序员,实现短视频转动漫效果。

效果展示

一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧

一、思路流程

读取视频帧
将每一帧图像转为动漫帧
将转换后的动漫帧转为视频
难点在于如何将图像转为动漫效果。这里我们使用基于深度学习的动漫效果转换模型,考虑到许多读者对这块不了解,因此我这边准备好了源码和模型,直接调用即可。

二、图像转动漫

为了让大家不关心深度学习模型,已经为大家准备好了转换后的onnx类型模型。接下来按顺序介绍运行onnx模型流程。

安装onnxruntime库

pip install onnxruntime

如果想要用GPU加速,可以安装GPU版本的onnxruntime:

pip install onnxruntime-gpu

需要注意的是:

onnxruntime-gpu的版本跟CUDA有关联,具体对应关系如下:

一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧
当然,如果用CPU运行,那就不需要考虑那么多了。考虑到通用性,本文全部以CPU版本onnxruntime。

运行模型

先导入onnxruntime库,创建InferenceSession对象,调用run函数。

如下所示

import onnxruntime as rt 
sess = rt.InferenceSession(MODEL_PATH)
inp_name = sess.get_inputs()[0].name
out = sess.run(None, {inp_name: inp_image})

具体到我们这里的动漫效果,实现细节如下:

import cv2
import numpy as np
import onnxruntime as rt 

# MODEL = "models/anime_1.onnx"
MODEL = "models/anime_2.onnx"

sess = rt.InferenceSession(MODEL)
inp_name = sess.get_inputs()[0].name


def infer(rgb):
    rgb = np.expand_dims(rgb, 0)
    rgb = rgb *  2.0 / 255.0 - 1 
    rgb =  rgb.astype(np.float32) 
    out = sess.run(None, {inp_name: rgb})
    out = out[0][0]
    out = (out+1)/2*255
    out = np.clip(out, 0, 255).astype(np.uint8)
    return out

def preprocess(rgb):
    pad_w = 0
    pad_h = 0
    h,w,__ = rgb.shape
    N = 2**3
    if h%N!=0:
        pad_h=(h//N+1)*N-h
    if w%2!=0:
        pad_w=(w//N+1)*N-w
    # print(pad_w, pad_h, w, h)
    rgb = np.pad(rgb, ((0,pad_h),(0, pad_w),(0,0)), "reflect")
    return rgb, pad_w, pad_h

其中, preprocess函数确保输入图像的宽高是8的整数倍。这里主要是因为考虑到深度学习模型有下采样,确保每次下采样能被2整除。

单帧效果展示

一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧
一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧
一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧

三、视频帧读取与视频帧写入

这里使用Opencv库,提取视频中每一帧并调用回调函数将视频帧回传。在将图片转视频过程中,通过定义VideoWriter类型变量WRITE确保唯一性。具体实现代码如下:文章来源地址https://www.toymoban.com/news/detail-414086.html

import cv2
from tqdm import tqdm

WRITER = None
def write_frame(frame, out_path, fps=30):
    global WRITER
    if WRITER is None:
        size = frame.shape[0:2][::-1]
        WRITER = cv2.VideoWriter(
            out_path,
            cv2.VideoWriter_fourcc(*'mp4v'),  # 编码器
            fps,
            size)
    WRITER.write(frame)

def extract_frames(video_path, callback):
    video = cv2.VideoCapture(video_path)
    num_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
    for _ in tqdm(range(num_frames)):
        _, frame = video.read()
        if frame is not None:
            callback(frame)
        else:
            break

到了这里,关于一个牛X小编,用Python将普通视频变成动漫,这也太厉害了吧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用python写一个变声器,要求导入mp4或者mp3文件,将视频中的声音变成女声

    用 Python 实现变声器可以使用第三方库 pydub。pydub 是一个音频处理库,可以支持多种音频格式,包括 mp3 和 mp4。 首先需要安装 pydub 库,使用 pip 安装: 这样我们就完成了一个简单的音频变声器,它可以将 mp4 或 mp3 文件中的声音变成女声。

    2024年02月16日
    浏览(44)
  • 【ChatGPT】开源软件:ChatALL —— 我是 GitHub 榜一!(PS: 其实,小编本地 build run 了一下,就是一个组装 Chat UI ……)

    给第一次听说 ChatALL 的朋友介绍下它吧。很简单,它就是个 能让你同时和 ChatGPT、Bing Chat、Bard、文心一言、讯飞星火、Claude、HuggingChat、Alpaca, Vincuna、MOSS、ChatGLM 聊天的工具,帮你快速找到最靠谱的答案。 Concurrently chat with ChatGPT, Bing Chat, bard, Alpaca, Vincuna, Claude, ChatGLM, MOSS,

    2024年02月07日
    浏览(47)
  • html实现动漫视频网站模板源码

    作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/134899691 html实现动漫视频网站模板源码 ,功能最全,好看的动漫网站模板,视频网站模板,主要以动漫视频介绍为主,视频网站以六个板块(视频网站首页,视频网站视频详情,视频网站视频播放,视频网站娱

    2024年02月05日
    浏览(60)
  • 使用 stable diffusion 将视频动漫化

    利用 controlnet 的 SoftEdge 算法和 Open Pose,再加 ebsynth 插件将一段真人的跳舞视频动漫化,具体步骤: 1、使用 ebsynth 设置好输出目录(不能有中文,否则会报错,已经试过了),选择原视频,运行抽取序列帧并生成蒙版图,蒙版图生成之后要看一下是不是你想要的东西,如果不

    2024年02月11日
    浏览(31)
  • Stable Diffusion教程(9) - AI视频转动漫

    配套抖音视频教程:https://v.douyin.com/UfTcrcJ/  打开webui 点击扩展-从网址安装 输入地址,然后点击安装 https://github.com/Scholar01/sd-webui-mov2mov 最后重启webui 从国内liblib AI 模型站下载模型 LiblibAI·哩布哩布AI-中国领先原创AI模型分享社区 可根据喜好选择一款喜欢风格下载,并放入

    2024年02月10日
    浏览(32)
  • 帮我实现用python完成一个爬取号码数据,并且分类普通号码,一级号码,二号码,三级号码...

    好的,我来帮助您实现这个爬取号码数据并分类的需求。 首先,您需要确定爬取号码的来源,是从网页上爬取还是从其他地方获取?如果是从网页上爬取,您可以使用爬虫框架 Scrapy 或者是 BeautifulSoup 库;如果是从其他地方获取,您可以考虑直接读取文件或者 API 接口。 接下

    2024年02月12日
    浏览(25)
  • springboot动漫视频 计算机毕设源码41930

                                                                        目  录 摘要 1 绪论 1.1 背景与意义 1.2 研究方法 1.3 系统开发技术的特色 1. 4   springboot 框架介绍 1. 5 论文结构与章节安排 2  动漫视频 系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 2 .3.2

    2024年02月22日
    浏览(32)
  • 专做真人转动漫视频AI——DomoAI(附详细教程)

    家人们!今天给大家推荐一款近期火爆外网的真人视频转动漫的AI工具——DomoAI,只需提供一张图片,或者一段视频,输入提示词,并指定动漫风格,即可将照片或者视频动漫化,而且生成的画面效果极致丝滑,简直太炸裂! 不得不说,画面效果真的挺赞!以往要想生成这种

    2024年01月24日
    浏览(26)
  • 注意看,这个小编叫小帅,居然用Python做出了可视化麻将,而且还有详细教学 | 附源码

    halo,包子们晚上好 今天给大家整一个 基于pygame实现的可视化麻将 现在不是很多小伙伴都喜欢打麻将的嘛,逢年过节都会搓搓麻将的嘛,所以呀小编这边不就给大家安排上啦,源码啥的都可以直接给大家使用的哟 快跟你的小伙伴一起玩耍吧 关注小编,私信小编领取哟! 当然

    2024年02月08日
    浏览(78)
  • AI副业拆解:故事生成动漫解说视频,用Artflow AI做英语口语故事

    大家好我是在看,记录普通人学习探索AI之路。 今天,我将再次为大家精心策划一个使用Artflow AI制作动漫解说视频的详尽教程,这个教程专为初学者设计。通过这款强大的Artflow AI工具,用户能够一键自动化完成从图像生成、视频剪辑到配音合成的所有步骤,其高效性能令人

    2024年01月19日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包