Pydrawing中文文档

项目声明


本项目仅供python爱好者学习使用, 禁止用于商业用途, 希望大家合理利用该项目🙂

安装Pydrawing

环境配置

  • 操作系统: Linux or macOS or Windows

  • Python版本: Python3.6+

  • ffmpeg: 若输入视频中含有音频, 需要借助ffmpeg解码, 因此需要保证电脑中存在ffmpeg并在环境变量中。

  • Pytorch: 若需要使用CartoonGan等算法, 需要安装Pytorch>=1.0.0和配置对应的环境, 详见官方文档

PIP安装(推荐)

在终端运行如下命令即可(请保证python在环境变量中):

pip install pydrawing --upgrade

源代码安装

1.在线安装

运行如下命令即可在线安装:

pip install git+https://github.com/CharlesPikachu/pydrawing.git@master

2.离线安装

利用如下命令下载pydrawing源代码到本地:

git clone https://github.com/CharlesPikachu/pydrawing.git

接着, 切到pydrawing目录下:

cd pydrawing

最后运行如下命令进行安装:

python setup.py install

快速开始

已经支持的算法

图像卡通化

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

config = {'mode': ['rgb', 'hsv'][0]}
filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'cartoonise', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • mode: 卡通化时所用的颜色空间, 支持”rgb”和”hsv”模式, 默认值为”rgb”。

人脸卡通化

1.相关论文

Paper

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

config = {'use_face_segmentor': False}
filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'cartoonizeface', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • use_cuda: 模型是否使用cuda加速, 默认值为”False”;

  • use_face_segmentor: 是否使用人脸分割器进一步去除人脸背景, 默认值为”False”。

铅笔素描画

1.相关论文

Paper

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

config = {'mode': ['gray', 'color'][0]}
filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'pencildrawing', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • mode: 生成的图片是灰色图还是彩色图, 支持”gray”和”color”, 默认值为”gray”;

  • kernel_size_scale: 铅笔笔画相关参数, 默认值为”1/40”;

  • stroke_width: 铅笔笔画相关参数, 默认值为”1”;

  • color_depth: 铅笔色调相关参数, 默认值为”1”;

  • weights_color: 铅笔色调相关参数, 默认值为”[62, 30, 5]”;

  • weights_gray: 铅笔色调相关参数, 默认值为”[76, 22, 2]”;

  • texture_path: 纹理图片路径, 默认使用库里提供的”default.jpg”文件。

卡通GAN

1.相关论文

Paper

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

config = {'style': ['Hayao', 'Hosoda', 'Paprika', 'Shinkai'][0]}
filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'cartoongan', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • style: 卡通画的风格类型, 支持”Hayao”, “Hosoda”, “Paprika”和”Shinkai”, 默认值为”Hosoda”;

  • use_cuda: 模型是否使用cuda加速, 默认值为”True”。

快速风格迁移

1.相关论文

Paper

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

config = {'style': ['starrynight', 'cuphead', 'mosaic​'][0]}
filepath = 'input.jpg'
drawing_client = pydrawing()
drawing_client.execute(filepath, 'fastneuralstyletransfer', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • style: 迁移的画的风格类型, 支持”starrynight”, “cuphead”和”mosaic”, 默认值为”starrynight”;

  • use_cuda: 模型是否使用cuda加速, 默认值为”True”。

抖音特效

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'douyineffect')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”。

视频转字符画

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'characterize')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”。

拼马赛克图片

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing
​
config = {'src_images_dir': 'images', 'block_size': 15}
filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'photomosaic', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • block_size: 马赛克block大小, 默认值为”15”;

  • src_images_dir: 使用的图片路径, 请保证该文件夹中存在大量色彩各异的图片以实现较好的拼图效果。

信号故障特效

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

filepath = 'input.mp4'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'glitch')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • header_size: 文件头部大小, 一般不需要改, 默认值为”200”;

  • intensity: 随机扰动相关的参数, 默认值为”0.1”;

  • block_size: 一次读取文件的大小, 默认值为”100”。

贝塞尔曲线画画

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'beziercurve')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • num_samples: 采样点, 默认值为”15”;

  • width: 坐标变换宽度, 默认值为”600”;

  • height: 坐标变换高度, 默认值为”600”;

  • num_colors: 使用的颜色数量, 默认值为”32”。

遗传算法拟合图像-圆形

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'geneticfittingcircle')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • cache_dir: 中间结果保存的文件夹, 默认值为”cache”;

  • save_cache: 是否保存中间结果, 默认值为”True”;

  • init_cfg: 算法初始化参数, 默认值为如下:

init_cfg = {
	'num_populations': 10,
	'init_num_circles': 1,
	'num_generations': 1e5,
	'print_interval': 1,
	'mutation_rate': 0.1,
	'selection_rate': 0.5,
	'crossover_rate': 0.5,
	'circle_cfg': {'radius_range': 50, 'radius_shift_range': 50, 'center_shift_range': 50, 'color_shift_range': 50},
}

遗传算法拟合图像-多边形

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing

filepath = 'input.jpg'
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, 'geneticfittingpolygon')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • cache_dir: 中间结果保存的文件夹, 默认值为”cache”;

  • save_cache: 是否保存中间结果, 默认值为”True”;

  • init_cfg: 算法初始化参数, 默认值为如下:

init_cfg = {
	'num_populations': 10,
	'num_points_list': list(range(3, 40)),
	'init_num_polygons': 1,
	'num_generations': 1e5,
	'print_interval': 1,
	'mutation_rate': 0.1,
	'selection_rate': 0.5,
	'crossover_rate': 0.5,
	'polygon_cfg': {'size': 50, 'shift_range': 50, 'point_range': 50, 'color_range': 50},
}

照片怀旧风格

1.相关论文

暂无

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing
​
filepath = 'input.jpg'
drawing_client = pydrawing()
drawing_client.execute(filepath, 'nostalgicstyle')

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”。

手写笔记处理

1.相关论文

Paper

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing
​
config = {
    'sat_threshold': 0.20, 
    'value_threshold': 0.25, 
    'num_colors': 8, 
    'sample_fraction': 0.05,
    'white_bg': False,
    'saturate': True,
}
filepath = 'input.jpg'
drawing_client = pydrawing()
drawing_client.execute(filepath, 'noteprocessor', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • sat_threshold: 背景饱和度阈值, 默认值为”0.2”;

  • value_threshold: 背景的阈值, 默认值为”0.25”;

  • num_colors: 输出颜色的数量, 默认值为”8”;

  • sample_fraction: 采样的像素占比, 默认值为”0.05”;

  • white_bg: 使背景为白色, 默认值为”False”;

  • saturate: 使颜色不饱和, 默认值为”True”。

照片油画化

1.相关论文

Paper

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing
​
config = {
    'edge_operator': 'sobel', 
    'palette': 0, 
    'brush_width': 5, 
}
filepath = 'input.jpg'
drawing_client = pydrawing()
drawing_client.execute(filepath, 'oilpainting​', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • brush_width: 画笔大小, 默认值为”5”;

  • palette: 调色板颜色, 默认为”0”, 代表使用原图的实际颜色;

  • edge_operator: 使用的边缘检测算子, 支持”sobel”, “prewitt”, “scharr”和”roberts”, 默认值为”sobel”。

简单的照片矫正

1.相关论文

暂无。

2.公众号文章介绍

Introduction

3.调用示例

from pydrawing import pydrawing
​
config = {
    'epsilon_factor': 0.08, 
    'canny_boundaries': [100, 200], 
    'use_preprocess': False, 
}
filepath = 'input.jpg'
drawing_client = pydrawing()
drawing_client.execute(filepath, 'photocorrection', config=config)

4.config选项

  • savename: 保存结果时用的文件名, 默认值为”output”;

  • savedir: 保存结果时用的文件夹, 默认值为”outputs”;

  • merge_audio: 处理视频时, 是否把原视频中的音频合成到生成的视频中, 默认值为”False”;

  • epsilon_factor: 多边形估计时的超参数, 默认为”0.08”;

  • canny_boundaries: canny边缘检测算子的两个边界值, 默认为”[100, 200]”;

  • use_preprocess: 是否在边缘检测前对图像进行预处理, 默认值为”False”。

随机运行一个小程序

写如下代码,保存并运行即可:

import random
from pydrawing import pydrawing

filepath = 'asserts/dog.jpg'
config = {
    "savedir": "outputs",
    "savename": "output"
}
drawing_client = pydrawing.pydrawing()
drawing_client.execute(filepath, random.choice(drawing_client.getallsupports()), config=config)

部分测试效果如下:





开发日志

2022-01-18

  • 版本号: v0.1.0,

  • 更新内容: 支持多种图像/视频美化算法。

2022-01-19

  • 版本号: v0.1.1到v0.1.2,

  • 更新内容: 部分算法优化, 支持人脸卡通化算法。

2022-01-25

  • 版本号: v0.1.3到v0.1.4,

  • 更新内容: 支持遗传算法拟合图像和贝塞尔曲线画画, 对需要pytorch的算法进行优化, 避免不安装pytorch则无法使用其他功能的尴尬以及解决不安装cuda则无法导入模型的问题。

2022-01-26

  • 版本号: v0.1.5,

  • 更新内容: 修复输入输出视频FPS不一致的问题。

2022-02-27

  • 版本号: v0.1.6,

  • 更新内容: 支持手写笔记处理、照片怀旧风格等算法。

2022-03-21

  • 版本号: v0.1.7,

  • 更新内容: 修改开源协议到Apache-2.0。

2022-03-24

  • 版本号: v0.1.8,

  • 更新内容: 增加作者信息。

2022-04-23

  • 版本号: v0.1.9,

  • 更新内容: 拼马赛克图片支持多种图片类型。

项目推荐

关于作者

学生党, 主要研究方向是计算机视觉, 顺便对信息安全感兴趣。

我的个人微信公众号是: Charles_pikachu (欢迎搜索关注,或者搜”Charles的皮卡丘”)

我的Github账号是: https://github.com/CharlesPikachu (欢迎搜索关注)

我的知乎账号是: https://www.zhihu.com/people/charles_pikachu (欢迎搜索关注)

我的B站账号是: https://space.bilibili.com/406756145 (欢迎搜索关注)

个人邮箱: charlesblwx@gmail.com