当前位置:   article > 正文

Python 数字图像处理-从 scikit-image 库开始学习

scikit-image处理的数据格式是numpy吗

常用 Python 数字处理图像库

图像处理中的常见任务包括显示图像,基本操作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别。常用的基于 python 脚本语言开发的数字图片处理库有以下几种,比如 PIL,Pillow, opencv, scikit-image 等。(PIL 是针对 python2, pillow 是针对 python3,两者功能一样。)

Pillow 只提供最基础的数字图像处理,功能有限;opencv 实际上是一个 c++ 库,只是提供了 python 接口,更新速度非常慢。scikit-image 是基于 scipy 的一款图像处理库,它将图片表示为数组(NumPy arrays)进行处理,正好与matlab一样。Image 读出来的是 PIL 的类型。而skimage.io读出来的数据是numpy格式的,这方便我们与 TensorFlow 框架对接。因此,我最开始选择 scikit-image 进行数字图像处理。

注意本文只是简单的介绍了下 skimage 库的基本用法,包括子模块 data 和 io 加载图像并获取图像信息,更多信息请参考官网教程。

基本使用

模块导入

scikit-image 是一个将图像作为 numpy array 格式处理的 Python 包。该包被导入为 skimage。(为了方便,后续内容我只写简称 skimage)

>>> import skimage



子模块和函数列表

skimage包由许多的子模块组成,各个子模块提供不同的功能。主要子模块列表如下,这个网页提供了全部的子模块和函数列表。

skimage子模块列表

基本操作

在 skimage 子模块中,我们可以找到绝大多数数字图像处理的功能。对于读取外部图片并显示,skimage 提供了 io 子模块,顾名思义,这个模块是用来图片输入输出操作的。为了方便练习,skimage 提供 data 子模块,里面嵌套了一些示例图片,我们可以直接使用。

下面是 data 子模块的用法:

  1. >>> from skimage import data    #导入data子模块
  2. >>>  camera = data.camera()     #create camera image,return (512, 512) uint8 ndarray

一要记住,在 scikit-image 中,图像表示为 NumPy 阵列,例如用于灰度图像的为2-D(2维)矩阵。代码示例:

  1. >> import skimage
  2. >> from skimage import data  #create camera image,return (300, 451, 3) uint8 ndarray
  3. >> camera = data.camera()
  4. >> print(type(camera))       #显示图像的数据类型
  5. >>> print(camera.shape)    #显示图像的尺寸

代码解释:skimage.data 子模块提供了一组返回示例图像的函数,可用于快速操作图像文件。也可以使用 skimage.io.imread()从外部文件中读取图像文件,并作为 Numpy数组加载。

  1. >>> import os
  2. >>> filename = os.path.join(skimage.data_dir, 'moon.png')
  3. >>> from skimage import io
  4. >>> moon = io.imread(filename)
  5. >>> print('The image moon data\n',moon)

参考链接

http://scikit-image.org/docs/stable/user_guide/getting_started.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/960910
推荐阅读
相关标签
  

闽ICP备14008679号