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


Posted in Python onJanuary 15, 2019

本文实例为大家分享了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即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用稀疏矩阵节省内存实例
Jun 27 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python修改MP3文件的方法
Jun 15 Python
Python对文件操作知识汇总
May 15 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
python实现简单http服务器功能
Sep 17 Python
python中pygame安装过程(超级详细)
Aug 04 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python 链接sqlserver 写接口实例
Mar 11 Python
用Python实现职工信息管理系统
Dec 30 Python
Elasticsearch 数据类型及管理
Apr 19 Python
带你认识Django
Jan 15 #Python
Python数据可视化库seaborn的使用总结
Jan 15 #Python
使用Django连接Mysql数据库步骤
Jan 15 #Python
Django框架模板介绍
Jan 15 #Python
python使用PIL实现多张图片垂直合并
Jan 15 #Python
python实现多张图片拼接成大图
Jan 15 #Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 #Python
You might like
php获取linux命令结果的实例
2017/03/13 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Python的函数的一些高阶特性
2015/04/27 Python
python在不同层级目录import模块的方法
2016/01/31 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
深入理解python中的atexit模块
2017/03/07 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
2015年公务员个人工作总结
2015/04/24 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
php修改word的实例方法
2021/11/17 PHP