python像素常用函数 python输出图像的像素点

python:PIL图像处理PIL (Python Imaging Library)
Python图像处理库,该库支持多种文件格式,提供强大的图像处理功能 。
PIL中最重要的类是Image类,该类在Image模块中定义 。
从文件加载图像:
如果成功,这个函数返回一个Image对象 。现在你可以使用该对象的属性来探索文件的内容 。
format 属性指定了图像文件的格式,如果图像不是从文件中加载的则为 None。
size 属性是一个2个元素的元组,包含图像宽度和高度(像素) 。
mode 属性定义了像素格式,常用的像素格式为:“L” (luminance) - 灰度图, “RGB” , “CMYK” 。
如果文件打开失败, 将抛出IOError异常 。
一旦你拥有一个Image类的实例,你就可以用该类定义的方法操作图像 。比如:显示
( show() 的标准实现不是很有效率,因为它将图像保存到一个临时文件,然后调用外部工具(比如系统的默认图片查看软件)显示图像 。该函数将是一个非常方便的调试和测试工具 。)
接下来的部分展示了该库提供的不同功能 。
PIL支持多种图像格式 。从磁盘中读取文件,只需使用 Image 模块中的 open 函数 。不需要提供文件的图像格式 。PIL库将根据文件内容自动检测 。
如果要保存到文件,使用 Image 模块中的 save 函数 。当保存文件时,文件名很重要,除非指定格式,否则PIL库将根据文件的扩展名来决定使用哪种格式保存 。
** 转换文件到JPEG **
save 函数的第二个参数可以指定使用的文件格式 。如果文件名中使用了一个非标准的扩展名 , 则必须通过第二个参数来指定文件格式 。
** 创建JPEG缩略图 **
需要注意的是,PIL只有在需要的时候才加载像素数据 。当你打开一个文件时 , PIL只是读取文件头获得文件格式、图像模式、图像大小等属性,而像素数据只有在需要的时候才会加载 。
这意味着打开一个图像文件是一个非常快的操作,不会受文件大小和压缩算法类型的影响 。
** 获得图像信息 **
Image 类提供了某些方法,可以操作图像的子区域 。提取图像的某个子区域,使用 crop() 函数 。
** 复制图像的子区域 **
定义区域使用一个包含4个元素的元组 , (left, upper, right, lower) 。坐标原点位于左上角 。上面的例子提取的子区域包含300x300个像素 。
该区域可以做接下来的处理然后再粘贴回去 。
** 处理子区域然后粘贴回去 **
当往回粘贴时 , 区域的大小必须和参数匹配 。另外区域不能超出图像的边界 。然而原图像和区域的颜色模式无需匹配 。区域会自动转换 。
** 滚动图像 **
paste() 函数有个可选参数,接受一个掩码图像 。掩码中255表示指定位置为不透明,0表示粘贴的图像完全透明,中间的值表示不同级别的透明度 。
PIL允许分别操作多通道图像的每个通道,比如RGB图像 。split() 函数创建一个图像集合,每个图像包含一个通道 。merge() 函数接受一个颜色模式和一个图像元组 , 然后将它们合并为一个新的图像 。接下来的例子交换了一个RGB图像的三个通道 。
** 分离和合并图像通道 **
对于单通道图像, split() 函数返回图像本身 。如果想处理各个颜色通道,你可能需要先将图像转为RGB模式 。
resize() 函数接受一个元组,指定图像的新大小 。
rotate() 函数接受一个角度值,逆时针旋转 。
** 基本几何变换 **
图像旋转90度也可以使用 transpose() 函数 。transpose() 函数也可以水平或垂直翻转图像 。
** transpose **
transpose() 和 rotate() 函数在性能和结果上没有区别 。
更通用的图像变换函数为 transform()。
PIL可以转换图像的像素模式 。
** 转换颜色模式 **
PIL库支持从其他模式转为“L”或“RGB”模式,其他模式之间转换,则需要使用一个中间图像,通常是“RGB”图像 。
ImageFilter 模块包含多个预定义的图像增强过滤器用于 filter() 函数 。
** 应用过滤器 **
point() 函数用于操作图像的像素值 。该函数通常需要传入一个函数对象,用于操作图像的每个像素:
** 应用点操作 **
使用以上技术可以快速地对图像像素应用任何简单的表达式 。可以结合 point() 函数和 paste 函数修改图像 。
** 处理图像的各个通道 **
注意用于创建掩码图像的语法:
Python计算逻辑表达式采用短路方式,即:如果and运算符左侧为false , 就不再计算and右侧的表达式 , 而且返回结果是表达式的结果 。比如 a and b 如果a为false则返回a,如果a为true则返回b , 详见Python语法 。
对于更多高级的图像增强功能,可以使用 ImageEnhance 模块中的类 。
可以调整图像对比度、亮度、色彩平衡、锐度等 。
** 增强图像 **
PIL库包含对图像序列(动画格式)的基本支持 。支持的序列格式包括 FLI/FLC 、 GIF 和一些实验性的格式 。TIFF 文件也可以包含多个帧 。
当打开一个序列文件时,PIL库自动加载第一帧 。你可以使用 seek() 函数 tell() 函数在不同帧之间移动 。
** 读取序列 **
如例子中展示的,当序列到达结尾时 , 将抛出EOFError异常 。
注意当前版本的库中多数底层驱动只允许seek到下一帧 。如果想回到前面的帧,只能重新打开图像 。
以下迭代器类允许在for语句中循环遍历序列:
** 一个序列迭代器类 **
PIL库包含一些函数用于将图像、文本打印到Postscript打印机 。以下是一个简单的例子 。
** 打印到Postscript **
如前所述 , 可以使用 open() 函数打开图像文件,通常传入一个文件名作为参数:
如果打开成功,返回一个Image对象 , 否则抛出IOError异常 。
也可以使用一个file-like object代替文件名(暂可以理解为文件句柄) 。该对象必须实现read , seek,tell函数,必须以二进制模式打开 。
** 从文件句柄打开图像 **
如果从字符串数据中读取图像,使用StringIO类:
** 从字符串中读取 **
如果图像文件内嵌在一个大文件里 , 比如 tar 文件中 。可以使用ContainerIO或TarIO模块来访问 。
** 从tar文档中读取 **
** 该小节不太理解,请参考原文 **
有些解码器允许当读取文件时操作图像 。通常用于在创建缩略图时加速解码(当速度比质量重要时)和输出一个灰度图到激光打印机时 。
draft() 函数 。
** Reading in draft mode **
输出类似以下内容:
注意结果图像可能不会和请求的模式和大小匹配 。如果要确保图像不大于指定的大?。?请使用 thumbnail 函数 。
Python2.7 教程 PIL
Python 之 使用 PIL 库做图像处理
来自
Python常用函数三有哪些?这7个函数使用频率最高,总算搞明白了1.1 例如:print(hex(2))案例
1.2 输出函数:print(hex(2))
1.3 输出结果:0x2
1.4 解析说明:返回16进制的数 。
2.1 例如:print(chr(10))案例
2.2 输出函数:print(chr(10))
2.3 输出结果:0o12
2.4 解析说明:返回当前整数对应的ASCll码
3.1 例如:print(ord("b"))案例
3.2 输出函数:print(ord("b"))
3.3 输出结果:98
3.4 解析说明:返回当前ASCll码的10进制数
4.1 例如:print(chr(97))
4.2 输出函数:print(chr(97))
4.3 输出结果:b
4.4 解析说明:返回当前ASCll码的10进制数 。
案例一:给你一个字符串,s = 'hello kitty'
1.1 输出函数:print(s.capitalize())
1.2 输出结果:0x2
1.3 解析说明:返回16进制的数 。
2.1输出函数:print(s.replace('kitty','kuang'))
2.2 输出结果:hello kuang
2.3 解析说明:替换功能,将kitty换成kuang 。
2.4 输出函数:print(s.replace('4','KK'))
2.5 输出结果:12KK12KK
2.6 解析说明:所有的4都替换成KK
2.7 输出函数:print(s.replace('4','KK'))
2.8 输出结果:12KK12KK124
2.9 解析说明:将前两个的4替换成go
案例一:给你一个字符串,ip = '192.168.1.1'
3.1 输出函数:print(ip.split(','))
3.2 输出结果:['192.168.1.1']
3.3 解析说明:将字符串分割成列表
案例一:给你一个字符串 , ip = '192.168.1.1'
3.3 输出函数:print(ip.split(',',2))
3.4 输出结果:['192.168.1.1']
3.5 解析说明:从第二个开始分割成列表
python常用函数1、complex()
返回一个形如 a bj python像素常用函数的复数python像素常用函数,传入参数分为三种情况:
参数为空时,返回0jpython像素常用函数;参数为字符串时,将字符串表达式解释为复数形式并返回python像素常用函数;参数为两个整数(a,b)时 , 返回 a bj;参数只有一个整数 a 时,虚部 b 默认为0,函数返回 a 0j 。
2、dir()
不提供参数时 , 返回当前本地范围内python像素常用函数的名称列表;提供一个参数时,返回该对象包含的全部属性 。
3、divmod(a,b)
a -- 代表被除数,整数或浮点数;b -- 代表除数,整数或浮点数;根据 除法运算 计算 a,b 之间的商和余数,函数返回一个元组(p,q) ,p 代表商 a//b ,q 代表余数 a%b 。
4、enumerate(iterable,start=0)
iterable -- 一个可迭代对象,列表、元组序列等;start -- 计数索引值,默认初始为0‘该函数返回枚举对象是个迭代器,利用 next() 方法依次返回元素值 , 每个元素以元组形式存在,包含一个计数元素(起始为 start )和 iterable 中对应的元素值 。
2021-02-13 Python OpenCV morphologyEx()函数该函数执行高级形态转换,可以使用腐蚀和膨胀作为基本操作来执行高级形态转换,任何操作都能够原地执行 。在多通道图像的例子中,每一个通道都独立地被处理 。
erode(腐蚀):它沿着物体边界移除像素并缩小物体的大小,会增强图像的暗部 。
dilate(膨胀):通过将像素添加到该图像中的对象的感知边界,扩张放大图像中的明亮白色区域 。
opening operation(开运算):先腐蚀 , 后膨胀 。能够排除小黑点 。
close operation(闭运算):先膨胀,后腐蚀 。能够排除小亮点 。
src:输入图像,输入图像的通道数是任意的 。
op:形态操作的类型如:cv2.MORPH_ERODE(腐蚀),cv2.MORPH_DILATE(膨胀),cv2.MORPH_OPEN(开运算),cv2.MORPH_CLOSE(闭元素)
...等等操作
(详细参考官方文档MorphTypes )
kernel:输入一个数组作为核 。能被 getStructuringElement 创建 。
anchor:核的锚点位置,负值说明该锚点位于核中心 。默认为核中心 。
iterations:整型int 。腐蚀与膨胀被应用的次数 。默认为None 。
例:一次开运算迭代两次:(MORPH_OPEN=)伴随两次迭代等于:腐蚀--腐蚀--膨胀--膨胀 。
borderType:像素边界扩展类型 , 参照官方文档所列的几种类型 BorderTypes
borderValue:边界为常量时的边界值 。默认值有特殊含义 。默认值为None 。
Python的函数都有哪些【常见的内置函数】
1、enumerate(iterable,start=0)
是python的内置函数 , 是枚举、列举的意思,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串) , enumerate将其组成一个索引序列 , 利用它可以同时获得索引和值 。
2、zip(*iterables,strict=False)
用于将可迭代的对象作为参数 , 将对象中对应的元素打包成一个个元组 , 然后返回由这些元组组成的列表 。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表 。
3、filter(function,iterable)
filter是将一个序列进行过滤,返回迭代器的对象,去除不满足条件的序列 。
4、isinstance(object,classinfo)
是用来判断某一个变量或者是对象是不是属于某种类型的一个函数,如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例 ,
返回True 。如果object不是一个给定类型的的对象 , 则返回结果总是False
5、eval(expression[,globals[,locals]])
用来将字符串str当成有效的表达式来求值并返回计算结果,表达式解析参数expression并作为Python表达式进行求值(从技术上说是一个条件列表),采用globals和locals字典作为全局和局部命名空间 。
【常用的句式】
1、format字符串格式化
format把字符串当成一个模板,通过传入的参数进行格式化,非常实用且强大 。
2、连接字符串
常使用 连接两个字符串 。
3、if...else条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块 。其中if...else语句用来执行需要判断的情形 。
4、for...in、while循环语句
循环语句就是遍历一个序列,循环去执行某个操作,Python中的循环语句有for和while 。
5、import导入其他脚本的功能
有时需要使用另一个python文件中的脚本,这其实很简单,就像使用import关键字导入任何模块一样 。
常用的十大python图像处理工具原文标题:10 Python image manipulation tools.
作者 | Parul Pandey
翻译 | 安其罗乔尔、JimmyHua
今天,在我们的世界里充满了数据,图像成为构成这些数据的重要组成部分 。但无论是用于何种用途 , 这些图像都需要进行处理 。图像处理就是分析和处理数字图像的过程,主要旨在提高其质量或从中提取一些信息,然后可以将其用于某种用途 。
图像处理中的常见任务包括显示图像,基本操作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别 。Python成为这种图像处理任务是一个恰当选择,这是因为它作为一种科学编程语言正在日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具供大家使用 。
让我们看一下可以用于图像处理任务中的常用 Python 库有哪些吧 。
1.scikit-image
scikit-image是一个开源的Python包,适用于numpy数组 。它实现了用于研究,教育和工业应用的算法和实用工具 。即使是那些刚接触Python生态系统的人 , 它也是一个相当简单直接的库 。此代码是由活跃的志愿者社区编写的 , 具有高质量和同行评审的性质 。
资源
文档里记录了丰富的例子和实际用例,阅读下面的文档:
用法
该包作为skimage导入,大多数功能都在子模块中找的到 。下面列举一些skimage的例子:
图像过滤
使用match_template函数进行模板匹配
你可以通过此处查看图库找到更多示例 。
2. Numpy
Numpy是Python编程的核心库之一,并为数组提供支持 。图像本质上是包含数据点像素的标准Numpy数组 。因此,我们可以通过使用基本的NumPy操作,例如切片、掩膜和花式索引 , 来修改图像的像素值 。可以使用skimage加载图像并使用matplotlib显示图像 。
资源
Numpy的官方文档页面提供了完整的资源和文档列表:
用法
使用Numpy来掩膜图像.
3.Scipy
scipy是Python的另一个类似Numpy的核心科学模块 , 可用于基本的图像操作和处理任务 。特别是子模块scipy.ndimage , 提供了在n维NumPy数组上操作的函数 。该包目前包括线性和非线性滤波,二值形态学,B样条插值和对象测量等功能函数 。
资源
有关scipy.ndimage包提供的完整功能列表,请参阅下面的链接:
用法
使用SciPy通过高斯滤波器进行模糊:
4. PIL/ Pillow
PIL( Python图像库 )是Python编程语言的一个免费库,它支持打开、操作和保存许多不同的文件格式的图像 。然而 , 随着2009年的最后一次发布,它的开发停滞不前 。但幸运的是还有有Pillow,一个PIL积极开发的且更容易安装的分支,它能运行在所有主要的操作系统,并支持Python3 。这个库包含了基本的图像处理功能,包括点运算、使用一组内置卷积核的滤波和色彩空间的转换 。
资源
文档中有安装说明,以及涵盖库的每个模块的示例:
用法
在 Pillow 中使用 ImageFilter 增强图像:
5. OpenCV-Python
OpenCV( 开源计算机视觉库 )是计算机视觉应用中应用最广泛的库之一。OpenCV-Python 是OpenCV的python版API 。OpenCV-Python的优点不只有高效 , 这源于它的内部组成是用C/C编写的,而且它还容易编写和部署(因为前端是用Python包装的) 。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择 。
资源
OpenCV-Python-Guide指南可以让你使用OpenCV-Python更容易:
用法
下面是一个例子,展示了OpenCV-Python使用金字塔方法创建一个名为“Orapple”的新水果图像融合的功能 。
6. SimpleCV
SimpleCV 也是一个用于构建计算机视觉应用程序的开源框架 。有了它,你就可以访问几个高性能的计算机视觉库,如OpenCV , 而且不需要先学习了解位深度、文件格式、颜色空间等 。
它的学习曲线大大小于OpenCV,正如它们的口号所说“计算机视觉变得简单” 。一些支持SimpleCV的观点有:
即使是初学者也可以编写简单的机器视觉测试摄像机、视频文件、图像和视频流都是可互操作的资源
官方文档非常容易理解 , 而且有大量的例子和使用案例去学习:
用法
7. Mahotas
Mahotas 是另一个计算机视觉和图像处理的Python库 。它包括了传统的图像处理功能例如滤波和形态学操作以及更现代的计算机视觉功能用于特征计算,包括兴趣点检测和局部描述符 。该接口是Python语言,适合于快速开发,但是算法是用C语言实现的 , 并根据速度进行了调优 。Mahotas库速度快,代码简洁,甚至具有最小的依赖性 。通过原文阅读它们的官方论文以获得更多的了解 。
资源
文档包括安装指导 , 例子,以及一些教程,可以更好的帮助你开始使用mahotas 。
用法
Mahotas库依赖于使用简单的代码来完成任务 。关于‘Finding Wally’的问题,Mahotas做的很好并且代码量很少 。下面是源码:
8. SimpleITK
ITK 或者 Insight Segmentation and Registration Toolkit是一个开源的跨平台系统,为开发人员提供了一套广泛的图像分析软件工具。其中, SimpleITK是建立在ITK之上的简化层,旨在促进其在快速原型设计、教育、解释语言中的应用 。SimpleITK 是一个图像分析工具包,包含大量支持一般过滤操作、图像分割和匹配的组件 。SimpleITK本身是用C写的,但是对于包括Python以内的大部分编程语言都是可用的 。
资源
大量的Jupyter Notebooks 表明了SimpleITK在教育和研究领域已经被使用 。Notebook展示了用Python和R编程语言使用SimpleITK来进行交互式图像分析 。
用法
下面的动画是用SimpleITK和Python创建的刚性CT/MR匹配过程的可视化。点击此处可查看源码!
9. pgmagick
pgmagick是GraphicsMagick库的一个基于python的包装 。GraphicsMagick图像处理系统有时被称为图像处理的瑞士军刀 。它提供了一个具有强大且高效的工具和库集合,支持以88种主要格式(包括重要格式 , 如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)读取、写入和操作图像 。
资源
有一个专门用于PgMagick的Github库,其中包含安装和需求说明 。还有关于这个的一个详细的用户指导:
用法
使用pgmagick可以进行的图像处理活动很少 , 比如:
图像缩放
边缘提取
10. Pycairo
Pycairo是图像处理库cairo的一组Python捆绑 。Cairo是一个用于绘制矢量图形的2D图形库 。矢量图形很有趣,因为它们在调整大小或转换时不会失去清晰度。Pycairo是cairo的一组绑定,可用于从Python调用cairo命令 。
资源
Pycairo的GitHub库是一个很好的资源,有关于安装和使用的详细说明 。还有一个入门指南,其中有一个关于Pycairo的简短教程 。
库:指南:用法
使用Pycairo绘制线条、基本形状和径向梯度:
总结
有一些有用且免费的Python图像处理库可以使用,有的是众所周知的,有的可能对你来说是新的,试着多去了解它们 。
【python像素常用函数 python输出图像的像素点】关于python像素常用函数和python输出图像的像素点的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读