读取图片

读取图片,第1张

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 PILImageopen  

无论是jpg还是png都能准确读取,PILImageopen 不直接返回numpy对象,可以用numpy提供的函数进行转换;

其他模块都直接返回numpyndarray对象,通道顺序为RGB,通道值得默认范围为0-255。

拓展:

利用PIL中的Image函数读取出来不是array格式,这时候需要用npasarray() 或者nparray()函数 。

区别:nparray() 是深拷贝,npasarray() 是浅拷贝

关于深拷贝和浅拷贝,这里给出一个说明:

Python 中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。

1 copycopy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。

2 copydeepcopy 深拷贝 拷贝对象及其子对象

一个很好的例子:

2 cv2imread

使用opencv读取图像,直接返回numpyndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255

cv2imread():读入,共两个参数:第一个参数为要读入的文件名,第二个参数为如何读取(cv2IMREAD_COLOR:读入一副彩色;cv2IMREAD_GRAYSCALE:灰度;cv2IMREAD_UNCHANGED:读入一幅,并包括其alpha通道。)

cv2imread()不能有中文路径,否则读取不出来

cv2imread() 读出来同样是array形式,但是如果是单通道的图,读出来的是三通道的。

3 matplotlibimageimread

用于显示matplotlib 用于读取并且读取出来就是array格式

解决使用pltsavefig 保存时一片空白 : 在pltshow() 之前调用 pltsavefig();

4 scipyndimageimread

scipyndimageimread(args, kwds)   Use ``matplotlibpyplotimread`` instead

 Returns:imread:ndarray(多维数组)

5 scipymiscimread

scipymiscimread(name, flatten=False, mode=None)

Use ``imageioimread`` instead

返回:imread: ndarray。通过读取图像获得的阵列 。读出来是array 形式,并且按照(H,W,C)形式保存

4 skimageioimread

scikit-image和numpy,matplotlib,scikit-learn等包都是Scipy项目的成员,通用numpy数组作为基本数据格式。在python中载入包名为skimage:所得即为numpy数组。

ioimread读出格式是uint8(unsigned int);value是numpy array;图像数据是以RGB的格式进行存储的,通道值默认范围0-255。

从名字中可以看出这个模块是具有matlab风格的,直接返回numpyndarray格式通道顺序是RGB,通道值默认范围0-255。

使用opencv读取图像,直接返回numpyndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。

直接返回numpyndarray 对象,通道顺序为RGB,通道值默认范围0-255。

没有调用默认的skimageioimread,返回值为0-1的float型数据,通道顺序为RGB

ImagePy 是一款基于 Python 的可扩展图像处理框架,可谓是 Python 版的 ImageJ,但设计更为精简,可以轻松接入 scipy, scikit-image, opencv 等任何基于 numpy 的图像处理库。

基于Python的超轻量级开源图像处理框架

简介:

支持bmp, rgb, png等常用图像格式

可以处理灰度图像和多通道(彩色)图像,支持图像栈(序列) *** 作

可以进行常用的各种数学运算,常用的滤波器 *** 作

支持各种选区 *** 作(点,线,面,多线,多面,镂空多边形)

可以进行像图像测量,以及像素统计

能够进行dem地表重建,图像序列的三维重建

支持宏录制,可接入scikit-image, opencv, itk等基于numpy的第三方库

获取: GitHub: yxdragon/imagepy: Image process framework based on plugin like imagej, it is esay to glue with skimage, opencv, mayavi

1 $ git clone 

安装:

安装 Python,Linux已经预装,Windows 到官网下载

安装依赖包 Numpy, Scipy, wxpython [opencv, scikit-image, mayavi]

Ubuntu:

1 $ apt-get install python-numpy

2 $ apt-get install python-scipy

3 $ apt-get install python-wxpython

Windows:

你可以从这里获取 Numpy, Scipy, wxpython 等二进制文件(whl)

然后依次用pip进行安装

1 $ python -m pip install your_filen_amewhl

运行: 进入克隆下来的项目主目录,运行mainpy脚本文件, 你将会看到如下的主界面。

ImagePy 能做什么?

以下仅仅列举 ImagePy 的一小部分功能:

细胞计数

图像匹配

地表重建

三维重建

生成一张纯色的

先设置的颜色,接着利用Image模块的new方法新生成一张,png格式的需要设置成rgba,类似的还有rgb,L(灰度图等),尺寸设定为640,480,这个可以根据自己的情况设定,颜色同样如此。

批量生成

上面生成了一张,那要生成十张呢,这种步骤一样,只是颜色改变的,利用循环就可以解决。首先创建一个颜色列表,把要生成的颜色放进去。接着循环获取不同的颜色,保存的时候利用字符串拼接的方法改变的名字。

本地生成的

封装成函数

前面的方法已经可以批量生成了,为了通用性强一点,我们可以封装成函数,把哪些可以改变的参数单独抽离出来。尺寸也同样,使用的时候,可以根据自己的需要定义颜色列表和尺寸。当然还有加一些提示用语和报错兼容性,这里就不讲了。

本地生成的

以上就是关于读取图片全部的内容,包括:读取图片、Python 三种imread读取图像的总结、像这样的图像用Python或MATLAB该怎么处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9541261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存