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中反射用法实例
Mar 27 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
Apr 24 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
python+django快速实现文件上传
Oct 24 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
python如何实现内容写在图片上
Mar 23 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
利用Python校准本地时间的方法教程
Oct 31 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
python map比for循环快在哪
Sep 21 Python
提取视频中的音频 Python只需要三行代码!
May 10 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安装攻略:常见问题解答(三)
2006/10/09 PHP
缓存技术详谈―php
2006/12/14 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python中pygame安装方法图文详解
2015/11/11 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python3爬虫全国地址信息
2019/01/05 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Python创建自己的加密货币的示例
2021/03/01 Python
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
初二政治教学反思
2014/01/12 职场文书
公司业务员岗位职责
2014/03/18 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
辩论赛新闻稿
2015/07/17 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android