嗨嗨,下午好,我是小圆

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

效果展示


怎么样?还可以吧,要不往下面继续看看,一起来学习一下

一、思路流程

  1. 读取视频帧
  2. 将每一帧图像转为动漫帧
  3. 将转换后的动漫帧转为视频

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

不想看文章细节的可以直接点击此处 【获取源码】

二、图像转动漫

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

安装onnxruntime库

pip install onnxruntime

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

pip install onnxruntime-gpu

需要注意的是:

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


当然,如果用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})

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

python学习交流Q群:770699889 ###
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].namedef 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*255out = np.clip(out, 0, 255).astype(np.uint8)return outdef preprocess(rgb):pad_w = 0pad_h = 0h,w,__ = rgb.shapeN = 2**3if h%N!=0:pad_h=(h//N+1)*N-hif 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整除。

单帧效果展示

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

这里使用Opencv库,提取视频中每一帧并调用回调函数将视频帧回传。在将图片转视频过程中,通过定义VideoWriter类型变量WRITE确保唯一性。具体实现代码如下:

import cv2
from tqdm import tqdm
python学习交流Q群:770699889 ###WRITER = None
def write_frame(frame, out_path, fps=30):global WRITERif 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

ok分享到这里就结束了,赶紧去试试吧

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦

觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

Python将普通视频变成动漫视频,这就是知识的力量~相关推荐

  1. 想要自制动漫视频?Python教你把普通视频变成动漫视频

    嗨嗨,下午好朋友们~ 之前毒教材被曝光引发争议,那些编写度教材的人着实可恶.咱程序员也没有手绘插画能力,但我们可以借助强大的深度学习模型将视频转动漫.所以今天的目标是让任何具有python语言基本能力 ...

  2. 如何可以用 Python 轻松将普通视频变成动漫视频?

    今天的目标是让任何具有python语言基本能力的程序员,实现短视频转动漫效果. 文章目录 一.思路流程 技术提升 二.图像转动漫 三.视频帧读取与视频帧写入 效果展示 一.思路流程 读取视频帧 将每一 ...

  3. 一日一技:如何用Python将 普通视频 变成 动漫视频

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

  4. 魔法的尽头是科技——用Python将普通视频变成动漫视频

    嗨害大家好鸭!我是小熊猫

  5. Python案例——将普通视频变成动漫视频

  6. Python爬虫:ZzzFun动漫视频网

    提醒:转载请标明作者和原文链接!!! CSDN个人主页: 高智商白痴 原文地址: https://blog.csdn.net/qq_44700693/article/details/109924262 ...

  7. Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!

    [CSDN 编者按]<哪吒>看哭了无数人!编者看的那场,有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下 ...

  8. n行Python代码系列:两行代码实现视频文件指定时刻画面输出

    ☞ ░ 老猿Python博文目录 ░ 一.引言 最近看到好几篇类似"n行Python代码-"的博文,看起来还挺不错,简洁.实用,传播了知识.带来了阅读量,撩动了老猿的心,决定跟风一 ...

  9. python偷回灭霸的宝石_Python视频处理案例:反转灭霸打响指的视频动画(源代码)!...

    <复仇者联盟4:终局之战>的宣传口号是逆转无限(to reserve infinity),在电影中,钢铁侠研究出了可以穿越时间的量子战甲,复仇者联盟人手一件,穿越时空回到过去带回了六颗无限 ...

最新文章

  1. arcgis合并tif影像_微图影像地图导出拼接大图的参数说明
  2. Python以表格、可视化图像的形式输出模型特征重要度(feature importances)并进行重要度归一化及排序
  3. 迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法)
  4. stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)
  5. 信息学奥赛一本通C++语言——1080:余数相同问题
  6. rz/sz命令参数解释
  7. ros多机通讯的办法
  8. php金额,PHP 如何处理金额
  9. libreelec投屏_我的NAS+HTPC折腾之旅 篇八:LibreELEC部署媒体中心服务器emby和jellyfin篇...
  10. 什么是水晶报表_看不懂财务报表?别方!二十年老会计教你做财务报表分析
  11. 【第41篇】ConvMAE:Masked Convolution 遇到 Masked Autoencoders
  12. Thonny - 为初学者准备的Python开发工具
  13. [20190727NOIP模拟测试9]单(single) 题解(树上dp)
  14. GTX1060安装gpu版tensorflow经验分享
  15. 玩游戏用什么轴的机械键盘好_机械键盘吃鸡用什么轴好?玩绝地求生机械键盘键轴推荐...
  16. openstack项目中遇到的各种问题总结 其一(问题多多)
  17. 没有内容的文集,竟然是不存在的
  18. 《炬丰科技-半导体工艺》化学蚀刻的铜-ETP铜
  19. 有测试辐射的软件,装个可以查看辐射的APP应用,测测你的手机辐射有多大
  20. 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛

热门文章

  1. excel应用之合并单元格保留内容和替换软回车
  2. 什么是Cloud Computing?
  3. 怎么查看电脑磁盘的分区是GPT还是MBR
  4. 反相比例运放反馈电阻并联电容和积分电路区别,以及积分电路中反馈电容并联电阻的区别。阻值和容值参数大小不同,电路性质也就不同了
  5. wan端口未连接怎么弄_路由器wan口网线未连接(wan口未插网线)的解决方法
  6. 华为交换机dhcp获取不到_华为S7706交换机DHCP Server 配置不成功问题
  7. 冰蝎下的反弹shell连接msfconsole
  8. Python爬虫-国家企业信用信息公示系统App
  9. 俞敏洪:人生最重要的两件事是什么?
  10. 我和CSDN的故事--学无止境