python - 如何在单元格具有指定值的二维掩码中查找 top_left、top_right、bottom_left、right 坐标?
问题描述
我有 2D numpy 数组,它是图像的掩码。每个单元格都有0
或1
值。所以我想在值为 1 的数组中找到 top:left,right,bottom:left,right。
例如输入数组:
[00000]
[01110]
[01100]
[00000]
预期输出:(1,1), (1,3), (2,1), (2,2)
解决方案
使用np.argwhere
和itertools.product
:
import numpy as np
from itertools import product
def corners(np_array):
ind = np.argwhere(np_array)
res = []
for f1, f2 in product([min,max], repeat=2):
res.append(f1(ind[ind[:, 0] == f2(ind[:, 0])], key=lambda x:x[1]))
return res
corners(arr)
输出:
[array([1, 1], dtype=int64),
array([2, 1], dtype=int64),
array([1, 3], dtype=int64),
array([2, 2], dtype=int64)]
推荐阅读
- node.js - 在谷歌计算 node.js 中创建图像的 VM
- terraform - GCloud 删除 CloudRun 域映射
- amazon-web-services - 如何在 aws lightsail 中重新启用 bitnami 横幅?
- javascript - Typescript 文件找不到 .d.ts 文件中定义的声明
- java - 我可以检测“合并到”H2 语句是否在内部使用插入或更新?
- opc-ua - 即使没有数据更改,有没有办法从 OPC UA 服务器获取订阅的采样间隔的通知?
- html - 尝试通过获取和发布将数据从 html 发送到谷歌电子表格
- c - 是否存在使用取消引用的指针在内存中交换 2 个值的边缘情况?
- node.js - URL.createObjectURL 不是一个函数 tinymce4
- javascript - 如何自定义 Material UI 自动完成下拉菜单