看到人家用PR什么编辑软件做这种丝滑一键换装的视频,自己也想尝试一下。不过PR这破玩意太难用了,还不如敲代码来的省事。
最开始想用 moviepy 的 moviepy.video.fx.all.mask_color 蒙版处理,发现还要结合目标识别这个复杂度就有点上头了。然后换了一个思路进行处理之后就算成功了吧。来看看成品效果先。
python 丝滑换衣算法演示
还是老套路先说机器配置,机器配置不够的玩不了这个。
软硬件、技能需求
CPU最好是I7-8750以上,要不整体制作会非常慢
Python版本3.6以上
由于涉及到深度学习的模块,从现在开始需要显卡了。
颜色变换说明
支持广泛的色彩空间。比如RGB、HSL/HSV、CMY/CMYK 等等各种色彩空间之间的转换。例如 XYZ 到 sRGB,Spectral 到 XYZ,CIE Lab 到 Adobe RGB。
色差计算。
色彩适应(改变光源)。
RGB 到十六进制,反之亦然。
Python 应用插件
colormath 和 MiVOS 分别应用颜色转换调整和模块交互式。
思路流程
你可能好奇这玩意砸出来的?
首先要了解一下颜色切换转换的方法。
CIE Lab 到 CIE XYZ 转换的简单示例。
from colormath.color_objects import LabColor, XYZColor
from colormath.color_conversions import convert_color
lab = LabColor(0.903, 16.296, -2.22)
xyz = convert_color(lab, XYZColor)
想使用不同的 RGB 空间进行转换
from colormath.color_objects import XYZColor, HSLColor, AdobeRGBColor
from colormath.color_conversions import convert_color
xyz = XYZColor(0.1, 0.2, 0.3)
hsl = convert_color(xyz, HSLColor, through_rgb_type=AdobeRGBColor)
# 转换回 XYZ,确保在 return 时使用相同的 RGB 颜色空间。
xyz2 = convert_color(hsl, XYZColor, through_rgb_type=AdobeRGBColor)
Delta E 方程
from colormath.color_objects import LabColor
from colormath.color_diff import delta_e_cie1976
# 参考颜色
color1 = LabColor(lab_l=0.9, lab_a=16.3, lab_b=-2.22)
# 与参考进行比较的颜色
color2 = LabColor(lab_l=0.7, lab_a=14.2, lab_b=-1.80)
# 作为浮点数的 delta E 值
delta_e = delta_e_cie1976(color1, color2)
MiVOS 模块交互式
这个地方你可以理解成识别对应颜色点之后一帧一帧的进行替换最后合成效果图那样。
到此这篇关于基于Python实现丝滑换装视频剪辑的文章就介绍到这了,更多相关Python视频剪辑内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!