布尔型索引对图像的分割呈现

  《Python程序设计与科学计算》中“布尔型索引”的一些笔记。
  利用布尔型索引可以实现对图像分割呈现。在处理过程中,将图片处理成数组,通过布尔型索引对图片所得数组进行选取操作,完成想要的效果,输出结果如图1所示。

import matplotlib.pyplot as plt
import numpy as np

a = np.linspace(0, 2 * np.pi, 50)
b = np.sin(a)
plt.plot(a, b)
mask = b >= 0
plt.plot(a[mask], b[mask], 'bo')
mask = (b >= 0) & (a <= np.pi / 2)
plt.plot(a[mask], b[mask], 'go')
plt.show()

图1 切片索引
  在此代码中有几处说明一下:
  1.关于‘bo’

plt.plot(a[mask], b[mask], 'bo') # 'b'对应的是颜色是“蓝色”,'o'对应的标记说明是“实心圈标记”

  建议多去了解plt.plot()函数细节
    plt.plot(x,y,format_string,kwargs)
  其中,x轴数据,y轴数据,format_string控制曲线的格式字串 ,format_string 由颜色字符,风格字符,和标记字符。(详细说明可查看:https://blog.csdn.net/u014539580/article/details/78207537)
  相关说明图片如下:
          在这里插入图片描述
        在这里插入图片描述
    在这里插入图片描述
  若将此处的代码中的’bo’改为’ro’,即:

import matplotlib.pyplot as plt
import numpy as np

a = np.linspace(0, 2 * np.pi, 200)
b = np.sin(a)
plt.plot(a, b)
mask = b >= 0
plt.plot(a[mask], b[mask], 'ro')
mask = (b >= 0) & (a <= np.pi / 2)
plt.plot(a[mask], b[mask], 'go')
plt.show()

  则图像显示,如图2所示:
图2
  2.关于‘mask’
  mask是一个只包含True和False的ndarray,它的shape和data一致,这个数组是让你指定需要掩盖的值的,标记为True的数据会被掩盖掉。
(关于mask的详细说明可查看:https://blog.csdn.net/qq_34018578/article/details/83242990)

  3.关于np.linspace
  该函数的形式为:
    linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
  说明:在规定的时间内,返回固定间隔的数据。在区间[start, stop]中,它将返回“num”个等间距的样本。其中,区间的结束端点可以被排除在外。
  参数:
  start : scalar
     队列的开始值
  stop : scalar
    队列的结束值。当‘endpoint=False’时,不包含该点。在这种情况下,队列包含除了“num+1"以外的所有等间距的样本。要注意的是,当‘endpoint=False’时,步长会发生改变。
  num : int, optional
    要生成的样本数。默认是50,必须要非负。
  endpoint : bool, optional
    如果是True,’stop’是最后的样本。否则,'stop’将不会被包含。默认为true
  retstep : bool, optional
  If True, return (samples, step), where step is the spacing between samples.

  返回值:
  samples : ndarray
  在闭区间[start, stop]或者是半开区间[start, stop)中有num个等间距的样本
  step : float
  仅仅当”retstep=True“时候会返回样本之间间距的大小

  此时若将以下一行代码:

a = np.linspace(0, 2 * np.pi, 200)

  改为:

a = np.linspace(0, 2 * np.pi)

  则图像显示,如图3所示:
图3

猜你喜欢

转载自blog.csdn.net/weixin_44359479/article/details/115529614