昨天做一个简单的图片处理后台需要用到 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-
分享到:
相关推荐
在本项目中,我们主要探讨的是使用Python编程语言结合OpenCV和Qt库进行数字图像处理。这个大作业涵盖了多个图像处理的重要概念和技术,包括图片的文字添加、空间转换、旋转、缩放、翻转、投影矫正、二值化、图像校正...
3. **Python中的图像处理**:Python由于其简洁的语法和丰富的库,成为了图像处理的首选语言之一。OpenCV Python API 提供了丰富的函数,如`cv2.imread()`用于读取图像,`cv2.imshow()`用于显示图像,以及`cv2....
总的来说,利用Python进行16位图像到8位图像的转换是一个常见的图像处理任务,通过PIL库和简单的编程技巧可以轻松实现。对于大规模的图像数据集,批量处理是必不可少的,可以大大提高工作效率。
在Python编程语言中,图片拼接是一个常见的图像处理任务,特别是在创建全景图片时。这个过程涉及到将多张图片按照特定顺序和方式组合成一张宽广视野的新图片。本篇文章将详细探讨如何使用Python来实现这一功能。 ...
在研究JPEG压缩编码对图像数据压缩的基本原理的基础上,设计了JPEG图像压缩算法程序实现流程,利用 Python语言对程序进行了编写,并实现了对压缩质量进行控制,验证了JPEG压缩编码对图像数据压缩的可行性。
在这个项目中,Python-OpenCV被用来实现MSRCR算法,通过编程自动化处理水下图像,改善其质量。 MSRCR算法是一种基于Retinex理论的图像复原技术。Retinex理论源自生物视觉系统,模仿人眼对光照变化的适应性,用于...
本篇学习笔记主要探讨了如何使用Python结合OpenCV库,通过拉普拉斯算子和Sobel算子来实现图像的锐化处理。 首先,我们导入必要的库,包括OpenCV(cv2)和NumPy(np)。OpenCV是一个强大的图像处理库,提供了丰富的...
- 调整滤波器参数以适应不同图像,过大或过小的滤波器半径可能导致图像失真或细节丢失。 - 对于特征提取和识别,选择合适的算法和参数至关重要,这通常需要根据具体应用场景进行试验和优化。 7. 常见问题: - ...
在Python编程领域,图片处理是一项常见的任务,尤其在设计、艺术和数据分析中。"Python-根据贴纸标准从图像中自动生成六角贴纸"这个项目聚焦于利用Python的图像处理库来创建符合特定形状(六角形)的贴纸。这种技术...
例如,人眼对某些类型的图像失真可能比对其他类型更敏感,因此有时候较低的 PSNR 值也可能带来良好的视觉效果。此外,还可以结合结构相似性指数(SSIM)、信息熵等其他指标综合评估图像质量。 在进行图像压缩、去噪...
通过学习和实践这些编码方法,不仅可以加深对信息论的理解,还可以提升Python编程能力,特别是处理数据结构和算法的能力。同时,这些编码技术在实际应用中,如文本压缩、图像压缩等领域也有广泛的应用。对于想要从事...
【数字图像处理 – 实验作业一 – Python】 在数字图像处理领域,实验作业常常涉及到对图像的基本属性进行操作,如对比度、空间分辨率和幅度分辨率。在这个Python实现中,我们将探讨如何通过编程来模拟这些效果。 ...
1. **OpenCV库**:OpenCV(开源计算机视觉库)是Python图像处理的重要工具,它提供了大量的图像处理和计算机视觉功能。在这个项目中,OpenCV将用于读取、处理和显示图像,以及进行特征匹配和图像变换。 2. **特征...
描述中的“利用PCX算法进行图像无失真压缩”进一步强调了我们处理的是无损压缩技术。无损压缩意味着在解压后,原始图像的数据可以完全恢复,不会出现任何质量损失。这对于需要保留原始图像所有细节的场合,例如医疗...
总的来说,"Equirec2Perspec"是一个实用的Python工具,它为全景图像处理提供了一种有效的方法,将等距矩形全景图像转换为透视图像,从而在虚拟现实应用中创建更为逼真的视觉体验。如果你对3D图像处理、全景图像或...
在图像处理领域,维纳滤波是一种常用的图像复原技术,它基于统计理论,通过最小化均方误差来恢复原始图像。本项目包含了一系列MATLAB程序,这些程序旨在帮助理解和应用维纳滤波器对图像进行去噪和复原。 维纳滤波器...
在传统的图像缩放方法中,图像的像素会简单地拉伸或压缩,这可能导致图像失真,尤其是在处理具有复杂细节或纹理的图像时。而内容感知的图像调整大小技术,如pyCAIR,通过分析图像内容来决定哪些像素可以安全地删除或...
最近邻插值速度快,但可能会导致图像失真;面积插值适合缩小图像,能较好地保留图像质量。 6. **JPEG压缩**:虽然OpenCV不直接支持JPEG压缩,但Python的PIL(Python Imaging Library)库可以实现这一功能。通过读取...
在Python中,可以利用OpenCV库进行图像处理操作。例如,使用`cv2.filter2D()`进行自定义滤波器应用,使用`cv2.medianBlur()`进行中值滤波,使用`cv2.equalizeHist()`进行直方图均衡化等。此外,scikit-image库提供了...