本文主要使用scikit-image库进行快速图像处理。
scikit-image库是图像处理的算法集合库,使用numpy
矩阵进行操作。完全免费,没有限制。提供了高质量、经过同行评审的代码,该库由志愿者们写成。
官方网站:https://scikit-image.org/
API:https://scikit-image.org/docs/stable/api/api.html
Windows:pip install scikit-image
Ubuntu:sudo apt-get install python-skimage
Anaconda:conda install -c conda-forge scikit-image
注意安装和导入不一样,安装时必须写全称,否则将出错。
import skimage
在scikit-image
库中,图像使用NumPy矩阵表示,如示例灰度图由二维矩阵表示:
from skimage import data
camera = data.camera() # 读取示例图像
type(camera) # numpy.ndarray
camera.shape # (512, 512)
调用skimage.io
看看该图片
from skimage import io
%matplotlib inline
io.imshow(camera)
同样,你可以使用其他库如Python绘图库matplotlib
进行绘制
import matplotlib.pyplot as plt
plt.imshow(camera, cmap='gray')
若不指定cmap
即matplotlib.pyplot.colormaps
色彩图,则默认为None
,效果如下
skimage.data
子模块提供了一系列返回示例图像的方法,可以用于快速测试
skimage.filters
子模块提供了一系列过滤器
从skimage.data
子模块中获取硬币图像,调用skimage.filters
子模块中的大津法
from skimage import filters
coins = data.coins() # 硬币图像
threshold_value = filters.threshold_otsu(coins) # 大津法
threshold_value # 求得的阈值为107
大津法也称最大类间方差法,是一种对灰度图像进行二值化的算法,根据图像灰度分成前景和背景两部分,使前景和背景图像的类间方差最大。