<背景>

这次分享的脚本是对图像进行增强处理,包含对图像像素的色彩增强、亮度增强、对比度增强、图像尖锐化等增强操作,主要基于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. vector查找元素

    转自:http://hi.baidu.com/chain2008/blog/item/821744585e12c5c89c8204e8.html 今天又忘了怎么在vector中查找某一个值..唉..每 ...

  2. mysql5.6.16绿色版配置、运行

    原文:mysql5.6.16绿色版配置.运行 1.从该地址http://dev.mysql.com/downloads/mysql/中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3 ...

  3. 详解linux vi命令用法

    vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件.当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来 ...

  4. 小结css2与css3的区别

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

  5. 创建GitHub技术博客

    创建GitHub技术博客全攻略 githubio技术博客网站生成 说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.本 ...

  6. 解决方案命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)

    首先对System.Web.Mvc这个dll文件重新引用本地的,添加引用,搜索mvc就可以出来,选择相应的版本.如果还不能正常运行, 然后右键打开这个项目引用System.Web.Mvc, 将复制本地 ...

  7. UiAutomator源码分析之注入事件

    上一篇文章<UiAutomator源码分析之UiAutomatorBridge框架>中我们把UiAutomatorBridge以及它相关的类进行的描述,往下我们会尝试根据两个实例将这些类给 ...

  8. windows批处理研究_不断更新

    windows批处理脚本(bat),很麻烦,主要原因有: 1.bat脚本编写的风格,太古老,调用方式太奇怪. 2.windows自身运行机制就对批处理脚本有兼容性问题.比如,鼠标双击打开一个bat,与 ...

  9. 1001. 杀死吸引力(3n+1)猜想 (15)(ZJUPAT 数学)

    主题链接:http://pat.zju.edu.cn/contests/pat-b-practise/1001 卡拉兹(Callatz)猜想: 对不论什么一个自然数n,假设它是偶数,那么把它砍掉一半. ...

  10. Linq to NHibernate入门示例

    Linq to NHibernate入门示例 NHibernate相关: 09-08-25连贯NHibernate正式发布1.0候选版 09-08-17NHibernate中一对一关联的延迟加载 09 ...