热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python图像处理库_使用Python图像处理库处理图像

python图像处理库Inmypreviousarticleontime-savingtipsforPythonists,ImentionedthatPythonisalangua

python图像处理库

In my previous article on time-saving tips for Pythonists, I mentioned that Python is a language that can inspire love in its users.

在我以前关于Python 节省时间技巧的文章中 ,我提到Python是一种可以激发用户爱的语言。

One reason for this is the number of time-saving libraries available for this language. A nice example is the Python Imaging Library (PIL), which is the focus of this article.

造成这种情况的原因之一是可以使用这种语言的省时的库数量很多。 一个很好的例子是Python Imaging Library(PIL) ,这是本文的重点。

您可以使用PIL做什么 (What You Can Do with PIL)

PIL is a free library that adds image processing capabilities to your Python interpreter, supporting a range of image file formats such as PPM, PNG, JPEG, GIF, TIFF and BMP.

PIL是一个免费的库,它为您的Python解释器添加了图像处理功能,支持多种图像文件格式,例如PPM,PNG,JPEG,GIF,TIFF和BMP。

PIL offers several standard procedures for image processing/manipulation, such as:

PIL提供了几种用于图像处理/操纵的标准程序,例如:

  • pixel-based manipulations

    基于像素的操作
  • masking and transparency handling

    遮罩和透明处理
  • filtering (for example, blurring, contouring, smoothing, edge detection)

    过滤(例如,模糊,轮廓绘制,平滑,边缘检测)
  • image enhancement (for example, sharpening, brightness adjustment, contrast)

    图像增强(例如,锐化,亮度调整,对比度)
  • geometrical, color and other transforms

    几何,颜色和其他变换
  • adding text to images

    向图像添加文本
  • cutting, pasting and merging images

    剪切,粘贴和合并图像
  • creating thumbnails.

    创建缩略图。

PIL和枕头 (PIL and Pillow)

One issue with PIL is that its most recent version, 1.1.7, was released in 2009, and only supports Python 1.5.2–2.7. Although the PIL site promises a forthcoming version for Python 3.X, its last commit was in 2011, and it appears that development has been discontinued.

PIL的一个问题是其最新版本1.1.7于2009年发布,仅支持Python 1.5.2–2.7。 尽管PIL网站承诺即将发布适用于Python 3.X的版本,但其最后一次提交是在2011年,并且看来开发已经停止。

Fortunately, all is not lost for Python 3.X users. A project called Pillow has forked the PIL repository and added Python 3.X support. Given that most readers will probably be working with Python 3.X, I'll focus on the Pillow update in this article.

幸运的是,Python 3.X用户并不会丢失所有内容。 一个名为Pillow的项目已经分叉了PIL存储库,并添加了Python 3.X支持。 鉴于大多数读者可能会使用Python 3.X,因此本文将重点介绍Pillow更新。

安装枕 (Installing Pillow)

Since Pillow supports versions of Python back to Python 2.4, I'll only focus on installing Pillow and not the older version of PIL.

由于Pillow支持Python版本回到Python 2.4,因此我将只专注于安装Pillow,而不是较早版本的PIL。

在Mac上使用Python (Python on a Mac)

I'm currently writing this tutorial on a Mac OS X Yosemite 10.10.5, and thus will describe how to install Pillow on a Mac OS X machine. But, don't worry, I'll provide a link at the end of this section that describes how to install Pillow on other operating systems.

我目前正在Mac OS X Yosemite 10.10.5上编写本教程,因此将描述如何在Mac OS X机器上安装Pillow。 但是,不用担心,我将在本节末尾提供一个链接,该链接描述如何在其他操作系统上安装Pillow。

I just want to note here that Mac OS X comes with Python pre-installed. However, the version most likely will be prior to 3.X.

我只想在此指出Mac OS X预先安装了Python。 但是,该版本最有可能在3.X之前。

For instance, on my machine, when I run $ python --version in the terminal, I get Python 2.7.10.

例如,在我的机器上,当我在终端中运行$ python --version时,我得到Python 2.7.10

Python和pip (Python and pip)

A very easy way to install Pillow is through pip.

安装Pillow的一种非常简单的方法是通过pip 。

If you don't have pip installed on your machine, simply type the following command in your terminal, and you're all done:

如果您的计算机上未安装pip,只需在终端中键入以下命令,即可完成操作:

$ sudo easy_install pip

Now, to install Pillow, simply type the following in your terminal:

现在,要安装Pillow,只需在终端中键入以下内容:

$ sudo pip install pillow

That was easy, wasn't it?

那很容易,不是吗?

As I promised, for installing Pillow on other operating systems, you can find the instructions for that here.

如我所承诺的,要在其他操作系统上安装Pillow,您可以在此处找到相关说明。

一些例子 (Some Examples)

In this section, I'll demonstrate a few simple things we can do with PIL.

在本节中,我将演示我们可以使用PIL进行的一些简单操作。

I'll perform these tests on the following image:

我将在以下图像上执行这些测试:

brick house

If you'd like to follow along with these examples, download the image.

如果您想遵循这些示例,请下载图片。

读取图像 (Read an image)

This is the most basic operation in an image processing task, since to process an image, you must read it first. With PIL, this can be easily accomplished as follows:

这是图像处理任务中最基本的操作,因为要处理图像,必须先阅读它。 使用PIL,可以很容易地完成以下操作:

from PIL import Image
img = Image.open('brick-house.png')

Notice here that img is a PIL image object, created by the open() function, which is part of the PIL Image module.

注意, img是一个由open()函数创建的PIL图像对象,它是PIL Image模块的一部分。

You can also read already open files, or from a string, or from a tar archive.

您也可以从字符串或tar存档中读取已打开的文件。

将图像转换为灰度,显示并保存 (Convert an image to grayscale, display it, and save it)

The file brick-house.png is a color image. To convert it to grayscale, display it, and then save the new grayscale image, you can simply do the following:

文件brick-house.png是彩色图像。 要将其转换为灰度 ,显示它,然后保存新的灰度图像,您只需执行以下操作:

from PIL import Image
img = Image.open('brick-house.png').convert('L')
img.show()
img.save('brick-house-gs','png')

Notice that we have used three main functions to perform this operation: convert(), show(), and save(). Since we want to convert to a grayscale image, the L parameter was used with convert().

注意,我们使用了三个主要函数来执行此操作: convert() , show()save() 。 由于我们要转换为灰度图像,因此将L参数与convert()

Here is the returned image:

这是返回的图像:

brick house grayscale version

转换为其他图像类型 (Convert to another image type)

The image we are working on is of type png. Say that you want to convert it to another image type, for instance jpg. This operation can be done using the save() function we used to save our result (write output to disk) in the above subsection:

我们正在处理的图像是png类型。 假设您要将其转换为其他图像类型,例如jpg 。 可以使用上面小节中用来保存结果(将输出写入磁盘)的save()函数来完成此操作:

from PIL import Image
img = Image.open('brick-house.png')
img.save('brick-image','jpeg')

调整图像大小 (Resize an image)

The size (dimensions) of our original image is 440 x 600px. If we want to resize it, and make it of size 256 x 256px, this can be done as follows:

我们原始图像的大小(尺寸)为440 x 600像素。 如果我们要调整大小,并使其尺寸为256 x 256像素,则可以按以下步骤进行操作:

from PIL import Image
img = Image.open('brick-house.png')
new_img = img.resize((256,256))
new_img.save('brick-house-256x256','png')

This produces a new square image:

这将产生一个新的正方形图像:

brick house resized

As you can see, this squeezes the image into the desired dimensions rather than cropping it, which may not be what you want. You can, of course, also crop the image while retaining the proper aspect ratio.

如您所见,这会将图像压缩到所需的尺寸,而不是裁剪图像,这可能不是您想要的。 当然,您也可以在保留适当的宽高比的同时裁剪图像。

结论 (In Conclusion)

This quick introduction is just intended to scratch the surface of PIL and to demonstrate how easily some complex image processing tasks can be accomplished in Python through the PIL library.

这份快速入门只是为了了解PIL的表面,并演示如何通过PIL库在Python中轻松完成某些复杂的图像处理任务。

The many other operations you can perform using this library are described in the comprehensive Pillow documentation, where you can read more details about the issues described above, along with handy tutorials.

全面的Pillow文档中介绍了可以使用此库执行的许多其他操作,您可以在其中阅读有关上述问题的更多详细信息以及方便的教程。

I hope this introduction has inspired you to try out image manipulation with Python. Have fun!

我希望这篇介绍会启发您尝试使用Python进行图像处理。 玩得开心!

翻译自: https://www.sitepoint.com/manipulating-images-with-the-python-imaging-library/

python图像处理库



推荐阅读
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 本文将深入探讨生成对抗网络(GAN)在计算机视觉领域的应用。作为该领域的经典模型,GAN通过生成器和判别器的对抗训练,能够高效地生成高质量的图像。本文不仅回顾了GAN的基本原理,还将介绍一些最新的进展和技术优化方法,帮助读者全面掌握这一重要工具。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
author-avatar
好人杨华_840
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有