Python Numpy,mask图像的生成详解

什么是掩膜(mask)

在numpy中,有一个模块叫做ma,这个模块几乎复制了numpy里面的所有函数,当然底层里面都换成了对自己定义的新的数据类型MaskedArray的操作。

我们来看最基本的array定义。

An array class with possibly masked values.
Masked values of True exclude the corresponding element from any computation.

MaskedArray是一个可能带有掩膜信息的数组,对于它的任何计算都是只针对掩膜值为True的数值上的。

Construction::

 x = MaskedArray(data, mask=nomask, dtype=None, copy=False, subok=True,
     ndmin=0, fill_value=None, keep_mask=True, hard_mask=None,
     shrink=True, order=None)

这个class的属性有很多,但是呢,我们只需要关注三个属性就好了,也就是data,mask和fill_value。其他的属性很难用到,举个例子,比如那个hard_mask,这个属性为True就是指data一旦某些值被掩盖掉了就真的丢失了。详细的可以看源码注解。这里不过多介绍。

Parameters
----------
data : array_like
 Input data.
mask : sequence, optional
 Mask. Must be convertible to an array of booleans with the same
 shape as `data`. True indicates a masked (i.e. invalid) data.
fill_value : scalar, optional
 Value used to fill in the masked values when necessary.
 If None, a default based on the data-type is used.

data就不多说了,一个array_like,tuple,list,ndarray都行。

mask是一个只包含True和False的ndarray,它的shape和data一致,这个数组是让你指定需要掩盖的值的,标记为True的数据会被掩盖掉。被掩盖的位置会变成 –(这是两个短横杠,类型是MaskedConstant )

fill_value是一个标量,当你掩盖掉一些值之后,如果你想把这些被掩盖的值换成另外一个值,那么你就需要用到它。

import numpy.ma as npm
import numpy as np

data = np.random.randint(1, 10, size=[1, 5, 5])
mask = data < 5
arr = npm.array(data, mask=mask)
print(arr)

#[[[6 6 -- 8 --]
# [-- -- -- 6 7]
# [9 -- -- 6 9]
# [-- -- 5 -- 8]
# [6 9 -- 5 --]]]

不过numpy也可以直接对ndarray进行条件运算。

import numpy as np

arr = np.random.randint(1, 10, size=[1, 5, 5])
mask = arr<5
arr[mask] = 0 # 把标记为True的值记为0
print(arr)

#[[[9 9 7 6 0]
# [0 0 6 9 0]
# [8 0 8 5 0]
# [0 5 5 8 9]
# [0 7 0 0 6]]]

以上这篇Python Numpy, mask图像的生成详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python之cv2与图像的载入、显示和保存实例

    本文是OpenCV 2 Computer Vision Application Programming Cookbook读书笔记的第一篇.在笔记中将以Python语言改写每章的代码. PythonOpenCV的配置这里就不介绍了. 注意,现在OpenCV for Python就是通过NumPy进行绑定的.所以在使用时必须掌握一些NumPy的相关知识! 图像就是一个矩阵,在OpenCV for Python中,图像就是NumPy中的数组! 如果读取图像首先要导入OpenCV包,方法为: impor

  • python实现根据给定坐标点生成多边形mask的例子

    处理数据集的过程中用到了mask 但是源数据集中只给了mask顶点的坐标值,那么在python中怎么实现生成只有0.1表示的mask区域呢? 主要借鉴cv2中的方法: (我使用的数据情况是将顶点坐标分别存储在roi.mat中的x和y元素) matfn = 'roi.mat' data = sio.loadmat(matfn) x_cor = data['x'] y_cor = data['y'] im = np.zeros(图像对应尺寸, dtype="uint8") cor_xy =

  • python_mask_array的用法

    掩码数组 数据很大形况下是凌乱的,并且含有空白的或者无法处理的字符,掩码式数组可以很好的忽略残缺的或者是无效的数据点.掩码式数组由一个正常数组与一个布尔式数组组成,若布尔数组中为Ture,则表示正常数组中对应下标的值无效,反之False表示对应正常数组的值有效. numpy.ma模块中提供掩码数组的处理,这个模块中几乎完整复制了numpy中的所有函数,并提供掩码数组的功能: >>>import numpy.ma as ma >>>x = np.array([1,2,3,

  • Python Numpy,mask图像的生成详解

    什么是掩膜(mask) 在numpy中,有一个模块叫做ma,这个模块几乎复制了numpy里面的所有函数,当然底层里面都换成了对自己定义的新的数据类型MaskedArray的操作. 我们来看最基本的array定义. An array class with possibly masked values. Masked values of True exclude the corresponding element from any computation. MaskedArray是一个可能带有掩膜信

  • Python OpenCV实现图像模板匹配详解

    目录 1.什么是模板匹配及模板匹配方法matchTemplate() 介绍 素材准备 2.单模板匹配 2.1 单目标匹配 2.2 多目标匹配 3.多模板匹配 1.什么是模板匹配及模板匹配方法matchTemplate() 介绍 提供一个模板图像,一个目标图像,且满足模板图像是目标图像的一部分,从目标图像中寻找特定的模板图像的过程,即为模板匹配.OpenCV提供了matchTemplate()方法帮助我们实现模板匹配. 该方法语法如下: cv2.matchTemplate(image, templ

  • Python图像处理之图像量化处理详解

    目录 一.图像量化处理原理 二.图像量化实现 三.图像量化等级对比 四.K-Means聚类实现量化处理 五.总结 一.图像量化处理原理 量化(Quantization)旨在将图像像素点对应亮度的连续变化区间转换为单个特定值的过程,即将原始灰度图像的空间坐标幅度值离散化.量化等级越多,图像层次越丰富,灰度分辨率越高,图像的质量也越好:量化等级越少,图像层次欠丰富,灰度分辨率越低,会出现图像轮廓分层的现象,降低了图像的质量.图8-1是将图像的连续灰度值转换为0至255的灰度级的过程[1-3]. 如果

  • Python+Opencv实现图像模板匹配详解

    目录 引言 一.匹配方法 二.匹配单个对象 三.匹配多个对象 引言 什么是模板匹配呢? 看到这里大家是否会觉得很熟悉的感觉涌上心头!在人脸识别是不是也会看见 等等. 模板匹配可以看作是对象检测的一种非常基本的形式.使用模板匹配,我们可以使用包含要检测对象的“模板”来检测输入图像中的对象. 一.匹配方法 cv2.matchTemplate(img, templ, method) 参数:(img: 原始图像.temple: 模板图像.method: 匹配度计算方法) 方法如下: cv2.TM_SQD

  • python数字图像处理图像的绘制详解

    目录 正文 一.用figure函数和subplot函数分别创建主窗口与子图 二.用subplots来创建显示窗口与划分子图 三.其它方法绘图并显示 正文 实际上前面我们就已经用到了图像的绘制,如: io.imshow(img) 这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据.因此,我们也可以这样写: import matplotlib.pyplot as plt plt.imshow(img) imshow()函数格式为: matp

  • Python NumPy教程之数据类型对象详解

    每个 ndarray 都有一个关联的数据类型 (dtype) 对象.这个数据类型对象(dtype)告诉我们数组的布局.这意味着它为我们提供了以下信息: 数据类型(整数.浮点数.Python 对象等) 数据大小(字节数) 数据的字节顺序(小端或大端) 如果数据类型是子数组,它的形状和数据类型是什么. ndarray 的值存储在缓冲区中,可以将其视为连续的内存字节块.所以这些字节将如何被解释由dtype对象给出. 构造数据类型(dtype)对象 数据类型对象是 numpy.dtype 类的一个实例,

  • Python NumPy教程之遍历数组详解

    NumPy 包包含一个迭代器对象numpy.nditer.它是一个高效的多维迭代器对象,使用它可以迭代数组.使用 Python 的标准迭代器接口访问数组的每个元素. # 用于遍历数组的 Python 程序 import numpy as geek # 使用排列方法创建数组 a = geek.arange(12) # 具有 3 行和 4 列的形状数组 a = a.reshape(3,4) print('Original array is:') print(a) print() print('Mod

  • Python NumPy教程之二元计算详解

    二元运算符作用于位,进行逐位运算.二元运算只是组合两个值以创建新值的规则. numpy.bitwise_and(): 此函数用于计算两个数组元素的按位与. 此函数计算输入数组中整数的底层二进制表示的按位与. 代码#1: # 解释 bitwise_and() 函数的 Python 程序 import numpy as geek in_num1 = 10 in_num2 = 11 print ("Input number1 : ", in_num1) print ("Input

  • Python大批量搜索引擎图像爬虫工具详解

    python图像爬虫包 最近在做一些图像分类的任务时,为了扩充我们的数据集,需要在搜索引擎下爬取额外的图片来扩充我们的训练集.搞人工智能真的是太难了

  • Python NumPy 数组索引的示例详解

    目录 前言 1.访问数组元素 2.访问 2-D Arrays(数组) 3.访问 3-D Arrays(数组) 4.负索引 前言 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能.本文主要介绍Python NumPy 数组索引及访问数组元素. 1.访问数组元素 数组索引与访问数组元素相同. 您可以通过引用其索引号来访问数组元素. Nu

随机推荐