Python数字图像处理(2):图像的读取、显示和保存

skimage提供了io模块,顾名思义,这个模块是用来图片输入输出操作的。为了方便练习,也提供一个data模块,里面嵌套了一些示例图片,我们可以直接使用。
引入skimage模块可用:
from skimage import io

一、从外部读入图像并显示

读取单张彩色rgb图片,使用skimage.io.imread(fname)函数,带一个参数,表示需要读取的文件路径。显示图片使用skimage.io.imshow(arr)函数,带一个参数,表示需要显示的arr数组(读取的图片以numpy数组形式计算)。


Paste_Image.png

如果想读取灰度图,可以将imread的as_grey参数置为True,as_grey默认值为False。


Paste_Image.png

二、程序自带图片

skimage程序自带了一些示例图片,如果我们不想从外部读取图片,就可以直接使用这些示例图片:
astronaut:宇航员图片 coffee:一杯咖啡图片 lena:美女图片 camera:拿相机的人图片 coins:硬币图片 moon:月亮图片 checkerboard:棋盘图片 horse:马图片 page:书页图片 chelsea:小猫图片 hubble_deep_field:星空图片 text:文字图片 clock: 时钟图片 immunohistochemistry:结肠图片
使用这些图片可以不带参数。

from skimage import io, data
image = data.chelsea()
io.imshow(image)
io.show()
Paste_Image.png

图片名对应的就是函数名,如camera图片对应的函数名为camera(). 这些示例图片存放在skimage的安装目录下面,路径名称为data_dir,我们可以将这个路径打印出来看看:

    from skimage import data_dir
    print(data_dir)

输出为:/home/song/anaconda2/lib/python2.7/site-packages/skimage/data
也就是说,下面两行读取图片的代码效果是一样的:

    from skimage import data_dir,data,io
    img1=data.lena()  #读取lean图片
    img2=io.imread(data_dir+'/lena.png')  #读取lena图片

三、保存图片

使用io模块的imsave(fname,arr)函数来实现。第一个参数表示保存的路径和名称,第二个参数表示需要保存的数组变量。

    from skimage import io,data
    img = data.chelsea()
    io.imshow(img)
    io.show()
    io.imsave('cat.jpg', img)

保存图片的同时也起到了转换格式的作用。如果读取时图片格式为jpg图片,保存为png格式,则将图片从jpg图片转换为png图片并保存。

四、查看图片信息

读入图像后,我们可以直接查看图像的相关信息:

    from skimage import io,data
    img=data.chelsea()
    print(type(img))  #显示类型
    print(img.shape)  #显示尺寸
    print(img.shape[0])  #图片宽度
    print(img.shape[1])  #图片高度
    print(img.shape[2])  #图片通道数
    print(img.size)   #显示总像素个数
    print(img.max())  #最大像素值
    print(img.min())  #最小像素值
    print(img.mean()) #像素平均值

输出如下:
<type 'numpy.ndarray'> (300, 451, 3) 300 451 3 405900 231 0 115.305141661

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转自 python数字图像处理 基于python脚本语言开发的数字图片处理包,比如PIL,Pillow, op...
    jiandanjinxin阅读 148,128评论 8 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,447评论 25 709
  • 来源:NumPy Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4...
    布客飞龙阅读 33,258评论 6 98
  • 小孩子相信电视里的广告,老人们相信微信里的鸡汤,我们相信什么? 在被大量实时信息冲刷的当下,一条新闻的生命只有五秒...
    Bettysweetie阅读 3,321评论 3 0
  • 哪怕意识到如今的差距,但如何追赶又是另外一回事。先找寻优势在哪,再加以劣势补充,以得到更全面的分析。 优势:其实一...
    浪迹_绝尘阅读 1,495评论 0 0