python - 如何在numpy中返回图像中区域的坐标及其尺寸?

标签 python numpy

我有两个数据集,尺寸均为 25 x 25。一个数据集是“完整”图像,第二个数据集显示第一个图像中的对象,这意味着对象之外的所有内容都是零。

如何返回第二个数据集中对象所在位置的坐标,以便可以在第一个数据集中找到该对象?

我如何找到对象存在位置的尺寸(numpy 数组中对象的高度和宽度)?

最佳答案

我们将“完整”图像称为 img 和对象标签图像 mask。我将使用 5 × 5 数组进行说明:

import numpy as np

img = np.random.random((5, 5))
mask = np.array([
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [1, 1, 1, 1, 1],
        [0, 1, 1, 1, 0],
        [0, 0, 1, 0, 0],
       ], dtype=bool)

然后您可以轻松获得掩码中 True 点的面积:它只是总和,因为 True 为 1,False 为 0 :

np.sum(mask)

您可以使用 np.argwhere(mask) 获取 maskTrue 的坐标,但实际上您可能不需要因为您可以直接使用 mask 索引到 img 。也就是说,您可以从 img 获取数据,其中 maskTrue,如下所示:

img[mask]

例如,您可以获取 maskTrue 的数据点的平均值,如下所示:

np.mean(img[mask])

您可以仅使用屏蔽数据获取img,让其他一切都为0:

img * mask

或者,如果您更喜欢 nan 作为遮蔽区域:

masked = img.copy()
masked[~mask] = np.nan

最后,您可以获得 mask 区域的[height, width],如下所示:

[np.sum(np.max(mask, axis=i)) for i in (1, 0)]

关于python - 如何在numpy中返回图像中区域的坐标及其尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079602/

相关文章:

Python GCD - 错误

python - 将 cURL 请求转换为 Python-Requests 请求

python - 在python中存储大量 bool 数据

python - scipy 和 numpy 规范之间的性能差异

python - 如何将函数应用于 Python pandas 中的分组数据框?

python - 将值设置为 None 将两个列表压缩到字典中

python - 如何使用 flask 和 html 返回在下拉列表中选择的值列表

python - 由于德语变音,Python 中的字符串不相等

python - 如何有效地将函数逐行应用于 NumPy 矩阵

json - Flask 前端具有 Tensorflow 但不具有 Tensorflow 服务