python里读图像函数 python读取图像像素值

如何采用Python读取一个图像打开winPython工具包
输入以下代码,如图所示 。
from skimage import io
if __name__ == '__main__':
img_name="D:\\WinPython-64bit-3.5.3.0Qt5\\notebooks\\hashiqi.jpg"
print("我python里读图像函数的图片python里读图像函数!")
img=io.imread(img_name,as_grey=False)
io.imshow(img)
其中变量img_name是为python里读图像函数了指定自己图片所存的路径 。
单击保存按钮 ,
会跳出一个设置文件名的界面,填入要保存的名字即可 。
单击运行按钮,一般要单击两次才行,运行代码 。
单击后 , 就可以查看的我们显示的图片了 。
python有没有将图像变成函数的方法有
当然有,这就是Python函数图像工具(EXE) 。本程序运用Python中最令人喜爱的数据处理工具numpy和超强的图像库matplotlib,实现13种不同类别函数的分类图像整理,展示图像均可以保存为图片的形式,具备拖动、放大等功能
python处理图片数据?生成一张纯色的图片
先设置图片的颜色,接着利用Image模块的new方法新生成一张图片,png格式的图片需要设置成rgba,类似的还有rgb,L(灰度图等),尺寸设定为640,480,这个可以根据自己的情况设定 , 颜色同样如此 。
批量生成图片
上面生成了一张图片 , 那要生成十张图片呢,这种步骤一样,只是颜色改变的,利用循环就可以解决 。首先创建一个颜色列表,把要生成的图片颜色放进去 。接着循环获取不同的颜色 , 保存的时候利用字符串拼接的方法改变图片的名字 。
本地生成的图片
封装成函数
前面的方法已经可以批量生成图片了,为了通用性强一点,我们可以封装成函数,把哪些可以改变的参数单独抽离出来 。尺寸也同样,使用的时候,可以根据自己的需要定义颜色列表和尺寸 。当然还有加一些提示用语和报错兼容性,这里就不讲了 。
本地生成的图片
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个像素 。
该区域可以做接下来的处理然后再粘贴回去 。
** 处理子区域然后粘贴回去 **
当往回粘贴时 , 区域的大小必须和参数匹配 。另外区域不能超出图像的边界 。然而原图像和区域的颜色模式无需匹配 。区域会自动转换 。
** 滚动图像 **
【python里读图像函数 python读取图像像素值】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基础——读取图片
图像后缀名的转换:
要注意的是:对于彩色图像,不管其格式是png,还是bmp , 或者jpg,
在PIL中 , 使用Image模块的open()函数打开后,返回的图像对象的模式都是 RGB , 对于灰度图像,不管其图像格式是PNG,还是BMP,JPG,打开后,其模式为灰度L 。
PNG BMP JPG彩色图像格式之间的转换:可以通过Image模块的open函数和save函数,具体来说,在打开这些图像时,PIL会将他们解码成三通道的RGB图像 。用户可以基于RGB进行处理 。处理完毕后可以将其处理结果保存成PNG BMP JPG中任何格式 。
PNG BMP JPG灰度图像格式之间的转换 , 同理也可以通过类似途径,只是解码后时模式为L的图像 。
python库可以用来读取图片的库
1. PIL.Image.open
无论是jpg还是png都能准确读取 , PIL.Image.open 不直接返回numpy对象,可以用numpy提供的函数进行转换;
其他模块都直接返回numpy.ndarray对象 , 通道顺序为RGB,通道值得默认范围为0-255 。
拓展:
利用PIL中的Image函数读取出来不是array格式,这时候需要用np.asarray() 或者np.array()函数。
区别:np.array() 是深拷贝 , np.asarray() 是浅拷贝
关于深拷贝和浅拷贝,这里给出一个说明:
Python 中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块 。
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象 。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
一个很好的例子:
2.cv2.imread
使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR , 注意是BGR,通道值默认范围0-255
cv2.imread():读入图片,共两个参数:第一个参数为要读入的图片文件名 , 第二个参数为如何读取图片(cv2.IMREAD_COLOR:读入一副彩色图片;cv2.IMREAD_GRAYSCALE:灰度图片;cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道 。)
cv2.imread()不能有中文路径,否则读取不出来
cv2.imread() 读出来同样是array形式,但是如果是单通道的图,读出来的是三通道的 。
3.matplotlib.image.imread
用于显示图片matplotlib 用于读取图片并且读取出来就是array格式
解决使用plt.savefig 保存图片时一片空白: 在plt.show() 之前调用 plt.savefig();
4.scipy.ndimage.imread
scipy.ndimage.imread(*args, **kwds)Use ``matplotlib.pyplot.imread`` instead.
Returns:imread:ndarray(多维数组)
5.scipy.misc.imread
scipy.misc.imread(name, flatten=False, mode=None)
Use ``imageio.imread`` instead.
返回:imread: ndarray 。通过读取图像获得的阵列。读出来是array 形式,并且按照(H , W,C)形式保存
4. skimage.io.imread
scikit-image和numpy,matplotlib,scikit-learn等包都是Scipy项目的成员,通用numpy数组作为基本数据格式 。在python中载入包名为skimage:所得即为numpy数组 。
io.imread读出图片格式是uint8(unsigned int);value是numpy array;图像数据是以RGB的格式进行存储的,通道值默认范围0-255 。
python里读图像函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于python读取图像像素值、python里读图像函数的信息别忘了在本站进行查找喔 。

    推荐阅读