本文实例讲述了Python实现将照片变成卡通图片的方法。分享给大家供大家参考,具体如下:

之前的文章介绍了使用Photoshop将照片变成卡通图片,今次介绍用代码来实现这项任务,可以就此探查各种滤镜的内部机制。

制作环境:Windows10,Python2.7,Anaconda

任务描述:将D盘某文件夹中的所有图片使用代码进行卡通化,然后保存到另一文件夹中。

如前文所述,卡通化的关键是强化边缘与减少色彩,所以使用Photoshop进行卡通化的时候就使用了照亮边缘和干笔画的滤镜来处理。使用代码处理图片的时候也是在对边缘和色彩上做文章。以下使用OpenCV库来对照片处理,大致分为四步来完成。

1. 应用双边滤波器来减少图像的色彩

2. 将彩色图像转换为灰度,应用中值滤波器减少图像中的图像噪点

3. 使用自适应阈值处理灰度图像创建轮廓

4. 将来自步骤1的彩色图像与来自步骤3的轮廓叠加

第1步:减少图像色彩

因为双边滤波器平滑平坦区域同时能保持边缘清晰,所以很适合于将RGB图像转换为卡通。虽然速度好像慢一些一个技巧是重复(例如,通过num_bilateral = 7七次)应用小双边滤波器,而不是只用一次大双边滤波器。

cv2.bilateralFilter中的三个参数控制像素邻域的直径(d)和颜色空间中的滤波器的标准偏差(sigmaColor)以及坐标空间(sigmaSpace)。

第2步:转换为灰度,并使用中值滤波器减少噪点

OpenCV在边缘检测方面提供了多种选择,自适应阈值处理的优点是可以检测图像的每个小领域中最突出的特征,独立于图像的整体属性。

应用中值滤波器减少图像的色彩。将原始的彩色图片转换为灰度图片,接着应用中值模糊来减少灰度图像中的噪声。

第3步:创建轮廓

在降噪之后,就可以安全地应用自适应阈值来创建轮廓。 即使存在一些图像噪声,blockSize = 9的cv2.ADAPTIVE_THRESH_MEAN_C算法也会确保将阈值应用于9x9邻域的平均值减去C = 2。

第4步:合并轮廓与彩色图片

最后一步是将经处理的彩色图像(img_color)与边缘掩码(img_edge)组合。至此,一个可以卡通化图片的原始代码就写好了。图片效果有点理工的审美,不够文艺,效果上输给了Photoshop,但是在效率上扳回一城。

最后将上述代码封装成函数。导入python的os模块来方便文件处理。

希望本文所述对大家Python程序设计有所帮助。

原文链接:https://zhuanlan.zhihu.com/p/25556276

python人像变卡通,Python实现将照片变成卡通图片的方法【基于opencv】相关推荐

  1. python头像转卡通_将真实照片转换为卡通风格的非真实感图像

    人像卡通化 (Photo to Cartoon) 该项目为小视科技卡通肖像探索项目.您可使用微信扫描下方二维码或搜索"AI卡通秀"小程序体验卡通化效果. 简介 人像卡通风格渲染的目 ...

  2. python头像转卡通_Python实现将照片变成卡通图片的方法【基于opencv】

    本文实例讲述了Python实现将照片变成卡通图片的方法.分享给大家供大家参考,具体如下: 之前的文章介绍了使用Photoshop将照片变成卡通图片,今次介绍用代码来实现这项任务,可以就此探查各种滤镜的 ...

  3. python照片转卡通_Python实现将照片变成卡通图片的方法【基于opencv】

    本文实例讲述了Python实现将照片变成卡通图片的方法.分享给大家供大家参考,具体如下: 之前的文章介绍了使用Photoshop将照片变成卡通图片,今次介绍用代码来实现这项任务,可以就此探查各种滤镜的 ...

  4. python怎么把照片转成卡通_Python实现将照片变成卡通图片的方法【基于opencv】

    Python实现将照片变成卡通图片的方法[基于opencv]

  5. python人像变卡通_python 人像转漫画

    在网上,以及一些视频软件里面,我们都可以看见将人像转变为漫画的软件,那我们可不可以自己来做一个呢!那还等什么,来看一看吧 #python# 材料准备 按照我们之前的操作,我们都是需要先准备材料. 1. ...

  6. python滚动条变小,python处理滚动条

    第一种方式:键盘操作:通过定位(用xpath)页面最底部元素,运用键盘的down键移到底部 dr.find_element_by_xpath().send_keys(keys.DOWN) dr.fin ...

  7. python import变灰_pycharm中import呈现灰色原因的解决方法

    1. 问题描述: 同目录下,当多个文件之间有相互依赖的关系的时候,import无法识别自己写的模块,PyCharm中提示No Module. 2. 解决步骤: (1). 打开File--> Se ...

  8. python怎么变白-python – 在热图中使反向对角线变白

    我想尝试做一些如下图所示的图像, 只需设置反向对角线,就会留下白色.我无法将它们设置为白色.图表采用整数值,我不知道白色对应的整数值. 谢谢! 编辑: 这是代码; import math from m ...

  9. python彩虹图_灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3

    做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...

最新文章

  1. matlab实验是啥,matlab实验心得体会
  2. Java学习之if语句
  3. Linux之数组和关联数组
  4. 在iphone程序中打开word、execl、pdf等文档
  5. vue --- cdn导入,一些基本操作
  6. Cloud一分钟 | 电商月将至,腾讯云DCDB助力电商企业应对支付洪峰
  7. 数据结构 10分钟让你掌握经典排序(一)
  8. 详解java类的生命周期 .
  9. 当 Python 中混进一只薛定谔的猫……
  10. python安装笔记_Python学习笔记(一)python的安装和配置
  11. java分页计算当前页_java分页计算
  12. vb调用python函数_vb.net / C# 调用 python
  13. Python web框架之tornado(龙卷风)
  14. 桌面上计算机程序包能删吗,不小心卸载了windows驱动程序包(电脑上别乱清理了)...
  15. [译]基于Vue JS, Webpack 以及Material Design的渐进式web应用 [Part 1]
  16. (一)AC6(System Workbench for STM32)简单介绍及创建一个简单的STM32的工程
  17. 如何更新Nintendo Switch游戏
  18. mysql的时区_MySQL时区支持
  19. java utf8无bom格式_关于java:编写没有BOM的UTF-8
  20. SQL2000有文件挂起问题

热门文章

  1. 计算机复试机试题目与答案,二零一四年华中科技大学计算机研究生复试机试题目...
  2. android脚本 附近的人,Android仿微信、QQ附近好友雷达扫描效果
  3. 【业务理解】数据指标
  4. 百万网易邮箱账号被公开叫卖 | 请“同我们一起慢慢变老的网易邮箱”守护好我们的回忆!
  5. 毕业设计:微博语料中文情感分析
  6. 测试access函数
  7. ArcGIS教程:半变异函数建模
  8. php微信小程序毕业设计 php外送点餐奶茶小程序毕业设计毕设作品参考
  9. html设置windows10屏保,Win10怎么设置屏保密码_Win10设置待机密码?-192路由网
  10. 李开复谈互联网商业模式 李开复和王利芬高端对话