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 基础学习第二弹 类属性和实例属性
Aug 27 Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python中的super()方法使用简介
Aug 14 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Django学习笔记之Class-Based-View
Feb 15 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
对Django 中request.get和request.post的区别详解
Aug 12 Python
python的等深分箱实例
Nov 22 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
你应该知道的Python3.6、3.7、3.8新特性小结
May 12 Python
通过代码实例了解Python异常本质
Sep 16 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
学校节能减排倡议书
2014/05/16 职场文书
环境卫生倡议书
2014/08/29 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
三潭印月的导游词
2015/02/12 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers