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网络编程示例(客户端与服务端)
Apr 24 Python
Python科学计算环境推荐——Anaconda
Jun 30 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
window下eclipse安装python插件教程
Apr 24 Python
Python 实现选择排序的算法步骤
Apr 22 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
python wxpython 实现界面跳转功能
Dec 17 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
python中urllib包的网络请求教程
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
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
jQuery 全选效果实现代码
2009/03/23 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
vue组件学习教程
2017/09/09 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
Python对列表的操作知识点详解
2019/08/20 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
2014年预备党员学习两会心得体会
2014/03/17 职场文书
教师研修随笔感言
2015/11/18 职场文书
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android
移除Selenium中window.navigator.webdriver值
2022/06/10 Python