Pydrawing中文文档
项目声明

本项目仅供python爱好者学习使用, 禁止用于商业用途, 希望大家合理利用该项目🙂
安装Pydrawing
环境配置
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.公众号文章介绍
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.相关论文
2.公众号文章介绍
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.相关论文
2.公众号文章介绍
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.相关论文
2.公众号文章介绍
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.相关论文
2.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.公众号文章介绍
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.相关论文
2.公众号文章介绍
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.相关论文
2.公众号文章介绍
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.公众号文章介绍
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