`
monkeyc
  • 浏览: 12885 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Python 处理图片失真

阅读更多

昨天做一个简单的图片处理后台需要用到 PIL(Python Image Library),之前没怎么用过遇到几个难点卡住了几次,没有时间仔细研究,暂作记录:

 

应用 PIL 中的 Image Module 可以方便的处理图片,比如旋转、剪裁、获取图片尺寸等等,简单看了几篇例子和文档(http://www.pythonware.com/library/pil/handbook/image.htm)感觉还是很强大。但应用处理的方法首先要获得一个 image 对象,应用 open 方法打开一个路径很简单,但是从一段 str 类型获得 image 对象就有点绕,比如请求一张网络上的图片,或者从数据库中读取出来图片,需要用 StringIO 处理一下,代码:

 

res = urilib2.urlopen(img_url)
img_str = res.read()
img = Image.open(StringIO.StringIO(img_str)) #得到 img 对象

 

暂时还不明白 fromstring 和 frombuffer 打开一张图片和这有什么不一样。。

 

另外在处理过图片存储的时候很坑爹,需要用 tostring() 方法将图片还原回 str 格式,但是文档中对 tostring()  中方法的描述实在是很少,结果很可能保存出来的图片比原来的失真了,google 了一阵没见靠谱的答案,只有一篇http://mail.python.org/pipermail/image-sig/2004-September/002908.html 让人大概知道保存的时候要传若干参数进去:

new_img = img.rotate(90)
new_img_str = new_img.tostring('jpeg', 'RGB', 90) 

 第三个参数是 jpeg 图片的 quality, 0-90,默认 75,所以如果不传基本肉眼能看出来处理过的图片失真了。参照 JPEG 描述:http://www.pythonware.com/library/pil/handbook/format-jpeg.htm

 

暂时记录,下次用到再仔细研究。

 

-EOF-

分享到:
评论

相关推荐

    JPEG图像压缩算法的python实现

    在研究JPEG压缩编码对图像数据压缩的基本原理的基础上,设计了JPEG图像压缩算法程序实现流程,利用 Python语言对程序进行了编写,并实现了对压缩质量进行控制,验证了JPEG压缩编码对图像数据压缩的可行性。

    数字图像处理课程设计报告,完整实验报告附源码

    5、利用图像处理算法处理风景图片,使风景图片变得模糊,实现背景虚化。 6、利用图像处理算法将步骤4得到的人像图像进行二值化处理,人像部分为0,背景部分为1。 7、利用步骤6得到的二值图像将步骤5得到的风景图像中...

    一些处理 360 度图像的工具_Jupyter_python_代码_下载

    一些处理 360 度图像的工具! 直接在全景图中的线和消失点 全景图像很特别,因为世界上的直线在图像中被投影为曲线段。此外,世界上的平行线在全景图中的两个对映消失点相交,而在传统图像中,它们在一个单一的 vp ...

    红外图像增强python代码-分段线性拉伸-灰度拉伸算法-图片均衡算法代码-红外图像对比图调整-自适应图像均衡算法代码

    这一份使用python语言编写的分段线性直方图红外图像(灰度图像)增强算法,可以实现8位、14位、16位的灰度图像或者红外...本资源还有一份测试代码,可以批量化处理图片。另外还有一批测试数据,可供用户测试和参考。

    Distortions:图像失真工具

    失真 图像失真工具。 一些图像失真技巧的实现##Incentive:这些失真技术最初是为 MNIST 和灰度图像设计的。 我修改了它们,以便它可以处理 RGB 图像。 但是,处理RGB图像时性能不是很好。 ##推荐用法:import ...

    基于python的水下图像增强和颜色恢复

    回顾了处理典型水下图像损伤的图像增强和恢复方法,包括一些极端的退化和失真。首先,从水下成像模型(IFM)的角度介绍了水下图像质量下降的主要原因。然后,回顾了水下恢复方法,同时考虑了无IFM和基于IFM的方法。...

    无人驾驶车车道线检测算法python源码+视频+项目说明+数据集.zip

    * 应用颜色转换,梯度等手段对图像处理得到一个阈值化的二进制图像 * 应用透视变化技术将二进制图像转换视角得到鸟瞰视角图("birds-eye view") * 检测二进制图像的车道像素并进行拟合以找到车道边界 * 确定计算...

    基于曝光融合框架的对比度增强算法.rar

    基于曝光融合框架的对比度增强算法(python) 一种精确的对比度增强的算法。具体来说,我们首先使用光照估计技术为图像融合设计权重矩阵。然后,用相机的响应模型合成多重曝光图像。接下来,我们找到最佳的曝光率,...

    基于Retinex理论和暗通道先验的夜间图像去雾算法

    目前夜间图像去雾研究较少,且处理结果存在失真度高、细节模糊、稳健性差等缺点。针对以上情况,结合大气散射模型和夜间雾天图像成像特点,提出基于Retinex理论和暗通道先验的去雾算法。首先,根据Retinex理论求得...

    Python数据挖掘项目开发实战_用神经网络破解验证码_编程案例解析实例详解课程教程.pdf

    图像检测和理解算法已相当成熟,几大厂商使用这些算法研制的监测系统已投入商用,用来处理实际问题。这些系统能够理解和识别视频画面中的人和物体。从图像中抽取信息很难。图像包含大量原始数据,图像的标准编码单元...

    基于神经网络的破解验证码实验代码

    随着人工智能的兴起,在计算机视觉(CV)领域上也有重大的突破进展,运用深度神经网络进行图像检测和研发并投入使用的算法...在PycharmIDE,用Python进行数据采集、数据处理、图像识别,并运用网络迭代计算来破解验证码。

    Image_Preprocessing_Steps

    在该存储库中,将演示Python编程语言和OpenCV库将处理应用于图像的能力。 数字图像处理是使用计算机算法对数字图像执行图像处理。 作为数字信号处理的子领域,数字图像处理相对于模拟图像处理具有许多优势。 它...

    基于NMF和HCS变换的WorldView-2图像融合方法研究。

    由于Worldview-2全色和多光谱图像的特殊覆盖范围不匹配,从多光谱图像中提取的强度分量I与从全色图像(PAN)中提取的强度分量差异很大,从而导致光谱失真增加。 在本文提出的基于NMF的分量I提取方法中,利用NMF可以...

    图像编辑器 GIMP 2.10.20 中文多语版.zip

    编程算法GIMP 是脚本图像处理的高质量框架,具有多语言支持,如 C,C ++,Perl,Python,Scheme 等等!可扩展性和灵活性GIMP 通过与许多编程语言(包括 Scheme,Python,Perl 等)集成来提供可扩展性。结果是高级别...

    基于稀疏特征提取的单幅图像去雾

    为解决暗通道先验去雾算法在天空区域和大片白色区域色彩失真的问题, 提出了一种基于稀疏表示模型和特征提取的单幅图像去雾算法。通过稀疏字典的训练过程, 学习雾天图像的稀疏特征, 初步优化粗略介质传输图的稀疏系数...

    OpenPose 1.7.0(身体、面部、手和脚估计的实时多人关键点检测库)

    校准工具箱:失真、内在和外在相机参数的估计。 单人跟踪以进一步加速或视觉平滑。 输入:图像、视频、网络摄像头、Flir/Point Grey、IP 摄像头,并支持添加您自己的自定义输入源(例如深度摄像头)。 输出:基本...

    astrotools:一些处理天文摄影图像的工具

    航天工具一些用于处理天文摄影图像的工具。项目这个想法是要有一个完整的工具链来处理从任何现代DSLR相机的RAW文件到最终产品的天文摄影图像。 我想到的工具链如下: 产生一个主深色框架,一个主偏压框架和一个主...

    matlab暗调滤镜代码-Image_Enhancement:图像增强

    CAIP2017的“使用曝光融合框架的新图像对比度增强算法”的Python实现 “通过通道划分增强内容感知的暗图像”的非官方实现。 实施“基于retinex的单个水下图像增强方法” Matlab代码,“使用对比度增强功能对对比度...

    nobrainer:开发用于3D图像处理的神经网络模型的框架

    Nobrainer是用于3D图像处理的深度学习框架。 它实现了来自最近文献的几种3D卷积模型,可与任何TensorFlow或Keras模型一起使用的加载和扩充体数据的方法,3D数据的损失和指标以及用于模型训练,评估,预测和转移学习...

    matlabjnd代码-PWJNDInfer:PWJND推断

    代替像素级JND轮廓估计,被认为是与人类感知更好相关的基本处理单元的图像块可以进一步分解为三个概念独立的组件,以进行可见性估计。 特别是,为了将结构退化合并到补丁程序级别的JND模型中,对基于深度学习的结构...

Global site tag (gtag.js) - Google Analytics