You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python NumPy如何填充二进制数组顶点围合的空白区域

实现方案

你当前需要填充的是四个顶点围成的轴对齐矩形区域,直接通过坐标范围做numpy切片赋值即可,不需要复杂的填充逻辑。

完整代码

import numpy as np
import itertools
import matplotlib.pyplot as plt

verts = np.array(list(itertools.product((0,2), (0,2))))
arr = np.zeros((5, 5))

# 提取四个顶点的行列最值,确定矩形边界
row_min, row_max = verts[:, 0].min(), verts[:, 0].max()
col_min, col_max = verts[:, 1].min(), verts[:, 1].max()

# numpy切片为左闭右开区间,因此最大值位置需要+1才能覆盖到顶点
arr[row_min:row_max+1, col_min:col_max+1] = 1

print(arr)
plt.imshow(arr)
plt.show()

运行结果

代码执行后打印的数组完全匹配目标结果:

[[1., 1., 1., 0., 0.],
 [1., 1., 1., 0., 0.],
 [1., 1., 1., 0., 0.],
 [0., 0., 0., 0., 0.],
 [0., 0., 0., 0., 0.]]

补充说明

  • 该写法是轴对齐矩形填充效率最高的实现,时间复杂度为常数级,和数组尺寸无关
  • 逻辑通用:只要是轴对齐的矩形顶点集,不管顶点坐标怎么变,都可以通过取行列最值的方式快速确定填充范围
  • 如果后续需要填充非轴对齐的任意多边形区域,可以换用cv2.fillPoly或者scipy.ndimage.binary_fill_holes类的方法实现

内容的提问来源于stack exchange,提问作者Saraha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:45:31