<背景>

这次分享的脚本是对图像进行增强处理,包含对图像像素的色彩增强、亮度增强、对比度增强、图像尖锐化等增强操作,主要基于PIL包的lambda和ImageEnhance模块。

使用方法和上一贴一样,本文脚本进行了多项功能的集成,一键完成所有处理,图像会即刻显示处理后的效果,并全部保存成特定名称jpeg。

下图是对处理后的图片的二维比较,为了更直观地比较,将处理项(亮度,颜色,对比度,锐度)作为横坐标,处理强度参数作为纵坐标(0,0.25,0.5,0.75,1)。当处理强度参数为1的时候,实际不对图像进行任何修改。

<效果> 

原图:

 

处理后:

lambda增强40%(0.4)

<源码分析> 

本文用到的是PIL的图像增强模块,即ImageEnhance 模块,这个模块可以快速对图像进行增强处理,包括色彩增强、亮度增强、对比度增强、图像尖锐化等等增强操作,所有操作都有相同形式的接口。通过相应类的enhance方法实现:色彩增强通过Color类的enhance方法实现;亮度增强通过Brightness类的enhance方法实现;对比度增强通过Contrast类的enhance方法实现;尖锐化通过Sharpness类的enhance方法实现。所有的操作都需要向类的构造函数传递一个Image对象作为参数,这个参数定义了增强作用的对象。同时所有的操作都返回一个新的Image对象。

如果传给enhance方法的参数是1.0,则不对原图像做任何改变,直接返回原图像的一个拷贝。

此外,lambda表达式可以(也仅限于)进行图像的亮度增强, imgbri=img.point(lambda i : i*1.4),代表对原图亮度增强40%。

irange代表图像增强参数的调整范围; 

istep代表图像按照等步长增强后输出的图片张数;

factor代表图像增强强度参数;

img_enhance_color.show("Color %f" %factor)显示图像增强效果;
img_enhance_color.save("Color_%.2f.jpg" %factor) 保存增强后的图像。

<全部源码> 

#start
# -*- coding: cp936 -*-
#阿瓦图像村出品,转载请注明出处
#QQ:576916092
import Image,ImageDraw
import ImageFilter,random,sys
import ImageEnhance
img = Image.open("1.jpg") ##图像处理## #转换为RGB图像
img = img.convert("RGB")               #PIL图像增强lambda
imgbri=img.point(lambda i : i*1.4) #对每一个像素点进行增强
imgbri.save("1bri.jpg")
imgbri.show() #PIL图像增强ImageEnhance
istep=4
irange=4.0 imgenhancer_Color=ImageEnhance.Color(img)
for i in range(istep):
        factor=i/irange
        img_enhance_color=imgenhancer_Color.enhance(factor)
        img_enhance_color.show("Color %f" %factor)
        img_enhance_color.save("Color_%.2f.jpg" %factor) 
        
imgenhancer_Brightness=ImageEnhance.Brightness(img)
for i in range(istep):
        factor=i/irange
        img_enhance_Brightness=imgenhancer_Brightness.enhance(factor)
        img_enhance_Brightness.show("Brightness %f" %factor)
        img_enhance_Brightness.save("Brightness_%.2f.jpg" %factor) 
        
imgenhancer_Contrast=ImageEnhance.Contrast(img)
for i in range(istep):
        factor=i/irange
        img_enhance_Contrast=imgenhancer_Contrast.enhance(factor)
        img_enhance_Contrast.show("Contrast %f" %factor)
        img_enhance_Contrast.save("Contrast_%.2f.jpg" %factor) 
        
imgenhancer_Sharpness=ImageEnhance.Sharpness(img)
for i in range(istep):
        factor=i/irange
        img_enhance_Sharpness=imgenhancer_Sharpness.enhance(factor)
        img_enhance_Sharpness.show("Sharpness %f" %factor)
        img_enhance_Sharpness.save("Sharpness_%.2f.jpg" %factor) 
#end

纯Python综合图像处理小工具(2)图像增强的更多相关文章

  1. 纯Python综合图像处理小工具(3)10种滤镜算法

    <背景>  滤镜处理是图像处理中一种非常常见的方法.比如photoshop中的滤镜效果,除了自带的滤镜,还扩展了很多第三方的滤镜效果插件,可以对图像做丰富多样的变换:很多手机app实现了实 ...

  2. 纯Python综合图像处理小工具(1)分通道直方图

    平时工作经常需要做些图像分析,需要给图像分通道,计算各个通道的直方图分布特点,这个事儿photoshop也能做,但是用起来不方便,且需要电脑上安装有PS软件,如果用OpenCV, 更是需要在visua ...

  3. 纯Python综合图像处理小工具(4)自定义像素级处理(剪纸滤镜)

      上一节介绍了python PIL库自带的10种滤镜处理,现成的库函数虽然用起来方便,但是对于图像处理的各种实际需求,还需要开发者开发自定义的滤镜算法.本文将给大家介绍如何使用PIL对图像进行自定义 ...

  4. Python趣味实用小工具

    代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...

  5. Python+Tkinter 密保小工具

    上图 代码 核心 编解码方面 Tkinter界面更新 总结 昨天被一同学告知,网上的一个QQ密码库中有我的一条记录,当时我就震惊了,赶紧换了密码.当然了,这件事也给了我一个警示,那就是定期的更换自己的 ...

  6. 几个可以提高工作效率的Python内置小工具

    在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具.这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略.每当有新来的同事看到我这么使用时,都忍不住感叹, ...

  7. python提效小工具-统计xmind用例数量

    问题:做测试的朋友们经常会用到xmind这个工具来梳理测试点或写测试用例,但是xmind8没有自带的统计测试用例,其他版本的xmind有些自带节点数量统计功能,但也也不会累计最终的数量,导致统计测试工 ...

  8. python tkinter模块小工具界面

    代码 #-*-coding:utf-8-*- import os from tkinter import * root=Tk() root.title('小工具') #清空文本框内容 def clea ...

  9. python: 实现sha1小工具

    File1: sha1.py File2: sha1.bat ------------------ File1: sha1.py import hashlib import os,sys def Ca ...

随机推荐

  1. css2与css3的区别

    css2与css3的区别 CSS3引进了一些新的元素新的特性,我收集以下,自己做了一个小结: animation(基础动画)eg:  div{animation: myfirst 5s linear ...

  2. Humming Bird A20 SPI2驱动编译

    Humming Bird A20 SPI2使用编译 Yao.GUET 2014-07-17,请注明出处:http://blog.csdn.net/Yao_GUET A20上带有4个spi接口,因为Hu ...

  3. 【Android平台安全方案】の #00-请不要在外部存储(SD卡)加密存储的敏感信息

    本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD00-J.+Do+not+store+sensitive+infor ...

  4. 快速构建Windows 8风格应用35-触控输入

    原文:快速构建Windows 8风格应用35-触控输入 引用 Windows 8设备通常具有多点触摸屏,用户可以同时使用多个手指来进行不同的输入交互,如点击.拖动或收缩等手势操作.另外Windows ...

  5. [译]ava 设计模式之构造器

    (文章翻译自Java Design Pattern: Builder) 构造器模式的关键之处在于它使用一步接招一步的流程去构建东西,例如:尽管构建的每一步是不相同的但是每一个产品还是遵循相同的流程. ...

  6. 通过Transaction Log(fn_dblog)取回被删除的数据

    最近跟 James 讨论为何「ApexSQL Log」这个工具可以读到被删除的数据呢? 原来它是透过 Transaction Log 来读取数据的! 于是透过 Transaction Log 到网络上 ...

  7. SVN服务器搭建(1)

    转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html SVN服务器搭建和使用(一) Subversion是优秀的版 ...

  8. 【转】怎么导出jar包

    如何导出jar包 右键工程->Export->Java->JAR file->Next-> Next 选中工程和工程中你要打包的内容,如果是Android的项目,需要把M ...

  9. 开源框架之TAB控件

    我的开源框架之TAB控件   需求 (1)支持iframe.html.json格式的tab内容远程请求 (2)支持动态添加tab (3)支持远程加载完成监听,支持tab激活事件监听 (4)支持relo ...

  10. VS多平台开发

    Xamarin技术文档------VS多平台开发   此技术业余时间研究,仅供大家学习参考,不涉及深入研究,有一定开发基础的人员,应该都能较快上手. 一.简介 Xamarin始创于2011年,旨在使移 ...