python实现图片彩色转化为素描

作者:zh_250 时间:2021-12-02 03:57:36 

本文实例为大家分享了Python将图片彩色转化为素描的具体代码,供大家参考,具体内容如下

第一种:


from PIL import Image, ImageFilter, ImageOps
img = Image.open('E:\\picture\\1.png')
def dodge(a, b, alpha):
return min(int(a*255/(256-b*alpha)), 255)
def draw(img, blur=25, alpha=1.0):
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.show()
img1.save('E:\\picture\\10.png')
draw(img)

第二种:


from PIL import Image
import os

# 图像组成:红绿蓝 (RGB)三原色组成 亮度(255,255,255)
image = "E:\\picture\\123.png"
img = Image.open(image)
img_all = "E:\\picture\\1234.png"
new = Image.new("L", img.size, 255)
width, height = img.size
img = img.convert("L")
# print(img.size)
# print(img.mode) #RBG
#
# img_get = img.getpixel((0, 0))
# print(img_get) #三原色通道
#
# img_L=img.convert('L')
# print(img_L)
# img_get_L=img_L.getpixel((0,0)) #换算 得到灰度值
# print(img_get_L)

# 定义画笔的大小
Pen_size = 3
# 色差扩散器
Color_Diff = 6
for i in range(Pen_size + 1, width - Pen_size - 1):
for j in range(Pen_size + 1, height - Pen_size - 1):
 # 原始的颜色
 originalColor = 255
 lcolor = sum([img.getpixel((i - r, j)) for r in range(Pen_size)]) // Pen_size
 rcolor = sum([img.getpixel((i + r, j)) for r in range(Pen_size)]) // Pen_size

# 通道----颜料
 if abs(lcolor - rcolor) > Color_Diff:
  originalColor -= (255 - img.getpixel((i, j))) // 4
  new.putpixel((i, j), originalColor)

ucolor = sum([img.getpixel((i, j - r)) for r in range(Pen_size)]) // Pen_size
 dcolor = sum([img.getpixel((i, j + r)) for r in range(Pen_size)]) // Pen_size

# 通道----颜料
 if abs(ucolor - dcolor) > Color_Diff:
  originalColor -= (255 - img.getpixel((i, j))) // 4
  new.putpixel((i, j), originalColor)

acolor = sum([img.getpixel((i - r, j - r)) for r in range(Pen_size)]) // Pen_size
 bcolor = sum([img.getpixel((i + r, j + r)) for r in range(Pen_size)]) // Pen_size

# 通道----颜料
 if abs(acolor - bcolor) > Color_Diff:
  originalColor -= (255 - img.getpixel((i, j))) // 4
  new.putpixel((i, j), originalColor)

qcolor = sum([img.getpixel((i + r, j - r)) for r in range(Pen_size)]) // Pen_size
 wcolor = sum([img.getpixel((i - r, j + r)) for r in range(Pen_size)]) // Pen_size

# 通道----颜料
 if abs(qcolor - wcolor) > Color_Diff:
  originalColor -= (255 - img.getpixel((i, j))) // 4
  new.putpixel((i, j), originalColor)

new.save(img_all)

i = os.system('mshta vbscript createobject("sapi.spvoice").speak("%s")(window.close)' % '您的图片转换好了')
os.system(img_all)

如果报错

python实现图片彩色转化为素描

可以直接安装
命令pip install Pillow即可

来源:https://blog.csdn.net/ahaotata/article/details/83830802

标签:python,彩色转化,素描
0
投稿

猜你喜欢

  • Python 发送SMTP邮件的简单教程

    2021-04-27 00:26:51
  • 浅谈DataFrame和SparkSql取值误区

    2021-03-21 22:04:18
  • python中的内置函数getattr()介绍及示例

    2023-01-15 19:16:46
  • Python多线程与多进程相关知识总结

    2021-07-06 21:37:16
  • Insert into与AddNew哪一个更好?

    2009-10-28 18:30:00
  • 交互设计实用指南系列(11)—减少记忆负担

    2010-03-29 13:12:00
  • 网页效果图设计之色彩索引

    2008-03-23 13:53:00
  • JavaScript定时器实现的原理分析

    2023-08-23 10:24:16
  • Python + selenium自动化环境搭建的完整步骤

    2023-11-19 12:42:57
  • php 使用 __call实现重载功能示例

    2023-07-13 20:10:28
  • ASP常见错误详解及解决方案小结 推荐第1/2页

    2011-02-24 11:19:00
  • Python基于域相关实现图像增强的方法教程

    2023-08-24 15:30:22
  • 复习Python中的字符串知识点

    2022-09-13 07:32:49
  • 如何使用Python在2秒内评估国际象棋位置详解

    2023-08-10 14:26:46
  • MySQL错误中文参照列表

    2010-09-30 14:41:00
  • Update 语句

    2009-06-22 12:52:00
  • PyCharm使用最多也最常用默认快捷键分享

    2023-05-23 20:54:55
  • SQL Server asp.net 数据提供程序连接池

    2009-09-18 08:18:00
  • php中关于普通表单多文件上传的处理方法

    2023-11-14 20:21:21
  • 解决python虚拟环境切换无效的问题

    2023-02-01 14:37:50
  • asp之家 网络编程 m.aspxhome.com