python-3.x - 分割掩码的倒置像素坐标
问题描述
下面是一个分割掩码的图像(它显示为黄色)。覆盖在此蒙版上的是相同分割蒙版的像素/坐标(显示为蓝色)。
我的问题是:为什么这些像素/坐标在对角线上被反转、透明和分割?为什么不将它们绘制为完整的“填充”,例如遮罩本身?
我的目标是让这些坐标以“正常”(x,y)线性顺序出现。代码:
from matplotlib import patches
import numpy as np
# create mask
mask = np.zeros((350, 525), dtype=np.uint8)
# populate region of mask
mask[2:222,42:521] = 1
# get coordinates of populated region
y, x = np.where(mask == 1)
pts = np.column_stack([x, y])
# define figure, axes, title
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.set_title('Segmentation mask pixel coordinates')
# show mask
plt.imshow(mask, interpolation='none')
# add mask points
poly = patches.Polygon(pts)
ax.add_patch(poly)
plt.show()
解决方案
在您的示例len(pts)
中,105380
因为pts
包含基于行的顺序中的所有掩码点。所以poly
有一个蛇形,长度=105380,宽度=1。蛇从左上角开始,到右下角结束——这就是你有对角线的原因。
要更正绘图,您可以进行以下修改:
# borders
(x1, y1), (x2, y2) = pts.min(axis=0), pts.max(axis=0)
# corners
pts_for_poly = list(zip((x1, x2, x2, x1), (y1, y1, y2, y2)))
# rectangle polygon
poly = patches.Polygon(pts_for_poly)
我希望现在它看起来有点像预期的或接近的。
推荐阅读
- python-3.x - 有没有办法使用 bs4 获取具有特定属性的标签中的文本?
- asp.net-core - 我是为 JWT 使用 [Authorize] 标头还是在公共端点内部进行检查?
- django - Django 表单 imageupload 给出空 dic
- continuous-integration - 赛普拉斯无法从 GitHub 机密中读取密码,但能够获取记录密钥
- android - 无法覆盖 androidx.fragment.app.Dialog 的 onCreateDialog 方法
- security - 防火墙日志查询
- pyspark - 在读取数据框时使用“\”
- firebase - 如何解决此问题 [错误:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:NoSuchMethodError:在 null 上调用了 getter 'instance'。错误?
- python - 在 NumPy 中使用 column_stack() 方法连接多维数组
- swift - mac上的SwiftUI滞后和泄漏内存