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

求Matlab createMask()函数的Python等效实现,生成多边形滤波掩码

等效于Matlab createMask的Python多边形掩码实现

Matlab的createMask函数会生成与当前坐标轴匹配的二值掩码,多边形内部区域为1,外部为0。在Python中,我们可以通过numpy生成坐标网格,结合matplotlib.path.Path判断点是否在多边形内,实现完全等效的功能。

实现代码

import numpy as np
from matplotlib.path import Path

# 对应Matlab中的position多边形坐标
position = np.array([
    [0, 0],
    [2.5, 0],
    [10.01, 75],
    [10.01, 125],
    [0, 25]
])

# 对应Matlab的xlim和ylim设置
x_range = (0, 50)
y_range = (0, 1000)

# 定义掩码分辨率(可根据需求调整,匹配Matlab轴的像素尺寸或图像分辨率)
res_x = 500  # x方向像素数
res_y = 1000 # y方向像素数

# 生成坐标网格
x = np.linspace(x_range[0], x_range[1], res_x)
y = np.linspace(y_range[0], y_range[1], res_y)
xx, yy = np.meshgrid(x, y)

# 将网格点转换为Path可识别的格式
points = np.vstack((xx.ravel(), yy.ravel())).T

# 创建多边形路径并判断点是否在内部
polygon_path = Path(position)
mask = polygon_path.contains_points(points).reshape(yy.shape)

# 可选:转换为uint8类型(与Matlab二进制掩码格式一致)
mask = mask.astype(np.uint8)

关键说明

  • 分辨率res_x和res_y可根据实际需求调整:如果Matlab代码是基于图像生成掩码,直接替换为图像的宽度和高度即可。
  • 生成的mask是二维布尔数组(或uint8数组),其中多边形内部的元素为1,外部为0,与Matlab的createMask输出完全一致。
  • 如果需要可视化掩码,可以用matplotlib.imshow(mask)查看效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:10:10