python图片转换成素描和漫画格式的方法

发布时间:2020-08-20 09:30:41

来源:亿速云

阅读:79

作者:小新

小编给大家分享一下python图片转换成素描和漫画格式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体内容如下

原图

图片转换后的成果

源码

# -*- coding: utf-8 -*-

import cv2

from PIL import Image, ImageOps, ImageFilter

# 转换成漫画风格

def toCarttonStyle(picturePath):

# 设置输入输出路径和文件名称

imgInput_FileName = picturePath

imgOutput_FileName = picturePath.split(".")[0] + '_cartoon.' + picturePath.split(".")[1]

# 属性设置

num_down = 2 # 缩减像素采样的数目

num_bilateral = 7 # 定义双边滤波的数目

# 读取图片

img_rgb = cv2.imread(imgInput_FileName)

# 用高斯金字塔降低取样

img_color = img_rgb

for _ in range(num_down):

img_color = cv2.pyrDown(img_color)

# 重复使用小的双边滤波代替一个大的滤波

for _ in range(num_bilateral):

img_color = cv2.bilateralFilter(img_color, d=9, sigmaColor=9, sigmaSpace=7)

# 升采样图片到原始大小

for _ in range(num_down):

img_color = cv2.pyrUp(img_color)

# 转换为灰度并且使其产生中等的模糊

img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)

img_blur = cv2.medianBlur(img_gray, 7)

# 检测到边缘并且增强其效果

img_edge = cv2.adaptiveThreshold(img_blur, 255,

cv2.ADAPTIVE_THRESH_MEAN_C,

cv2.THRESH_BINARY,

blockSize=9,

C=2)

# 算法处理后,照片的尺寸可能会不统一

# 把照片的尺寸统一化

height=img_rgb.shape[0]

width = img_rgb.shape[1]

img_color=cv2.resize(img_color,(width,height))

# 转换回彩色图像

img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB)

img_cartoon = cv2.bitwise_and(img_color, img_edge)

# 保存转换后的图片

cv2.imwrite(imgOutput_FileName, img_cartoon)

print('文件转换成漫画成功,保存在' + imgOutput_FileName)

# 透明度转换 素描转换的一部分

def dodge(a, b, alpha):

# alpha为图片透明度

return min(int(a * 255 / (256 - b * alpha)), 255)

# 图片转换为素描

def toSketchStyle(picturePath, blur=25, alpha=1.0):

# 设置输入输出路径和文件名称

imgInput_FileName = picturePath

imgOutput_FileName = picturePath.split(".")[0] + '_Sketch.' + picturePath.split(".")[1]

# 转化成ima对象

img = Image.open(picturePath)

# 将文件转成灰色

img1 = img.convert('L')

img2 = img1.copy()

img2 = ImageOps.invert(img2)

# 模糊度

for i in range(blur):

img2 = img2.filter(ImageFilter.BLUR)

width, height = img1.size

for x in range(width):

for y in range(height):

a = img1.getpixel((x, y))

b = img2.getpixel((x, y))

img1.putpixel((x, y), dodge(a, b, alpha))

# 保存转换后文件

img1.save(imgOutput_FileName)

print('文件转换成漫画成功,保存在' + imgOutput_FileName)

if __name__ == '__main__':

imgInput_FileName = input('输入文件路径:')

while True:

print('1、漫画风格')

print('2、素描风格')

userChoose = input('请选择风格(输入序号即可):')

if userChoose.__eq__('1'):

toCarttonStyle(imgInput_FileName)

break

elif userChoose.__eq__('2'):

toSketchStyle(imgInput_FileName)

break

else:

print('违法输入(请输入序号)')

break

以上是python图片转换成素描和漫画格式的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

python将图片转换成动漫_python图片转换成素描和漫画格式的方法相关推荐

  1. python将图片转换成动漫_python实现图片转换成素描和漫画格式

    本文实例为大家共享了python实现图片转换成素描和漫画格式的详细代码,供大家参考,详细内容如下 原图 图片转换后的成果 源码 # -*- coding: utf-8 -*- import cv2 f ...

  2. python将图片转换成动漫,python实现图片转换成素描和漫画格式

    本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码 # -*- coding: utf-8 -*- import cv2 f ...

  3. python漫画滤镜怎么实现的_python实现图片转换成素描和漫画格式

    本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码 # -*- coding: utf-8 -*- import cv2 f ...

  4. python将图片转动漫_python实现图片转换成素描和漫画格式

    本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码 # -*- coding: utf-8 -*- import cv2 f ...

  5. python图片转成素描_巧用python实现图片转换成素描和漫画格式

    [相关学习推荐:python教程] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf-8 ...

  6. python风格变换图片_巧用python实现图片转换成素描和漫画格式

    [相关学习推荐:python视频教程] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf ...

  7. python照片转化为漫画_巧用python实现图片转换成素描和漫画格式

    [] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf-8 -*- import cv2 ...

  8. python将图片转换成素描和漫画格式

    原图 图片转换后的成果 源码 # -*- coding: utf-8 -*-import cv2from PIL import Image, ImageOps, ImageFilter# 转换成漫画风 ...

  9. python把四个图画在一个窗口_python plt多个图在同一窗口显示方法

    python plt多个图在同一窗口显示代码 python 读取并显示图片,用plt 同时显示多幅图像 ##plt 同时显示多幅图像 import matplotlib.pyplot as plt p ...

最新文章

  1. 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★
  2. 贪心算法之——背包问题(nyoj106)
  3. android retrofit入门,Android开发 retrofit入门讲解
  4. HDU5593 ZYB's Tree 树形DP +分治
  5. 核密度估计Kernel Density Estimation(KDE)-代码详细解释
  6. JSR 310新日期/时间API的自定义JSR 303 Bean验证约束
  7. 基于Docker搭建Redis集群(主从集群)
  8. 多个python文件打包成exe_Python 3.4 .py文件打包成exe可执行文件方法
  9. 需求工程之一:需求之道
  10. 技术要求→物理安全→防雷击
  11. Windows 微软雅黑(Microsoft YaHei)+ Monaco 字体整合方案
  12. java pkcs1转pkcs8_openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  13. 327、浏览历史数据库表设计与缓存设计
  14. DISPLAY尚未设置
  15. 网络打印机无法接收打印命令
  16. Android如何设置按钮图片(控件图片)大小自适应
  17. js中写文档write和innerHTML的区别
  18. 美团买单与微信分付入局后,蚂蚁花呗和京东白条地位不保了?
  19. 阻抗匹配四种处理方式
  20. 记一次网易七鱼云客服开发记录

热门文章

  1. 有可以间隔两个月提醒的电脑桌面便签软件吗?
  2. 9月考,如何选择靠谱正规的培训机构?
  3. windows内网端口映射到外网(可用于远程桌面、数据库的端口)
  4. 计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
  5. 全能中间件 REST API 使用手册
  6. 华为畅享20 Plus和华为畅享20pro 的区别 哪个好
  7. 挂载google 云端硬盘
  8. Windows小知识(一)——加装固态硬盘,重装系统win10,固态硬盘分区,键盘混乱解决办法
  9. 微信小程序 java在线租房-房屋租赁系统springboot
  10. jQuery模板引擎: jQuery-tmpl 和 JsRender 使用介绍