numpy 使用多边形点坐标创建图像遮罩

dw1jzc5e  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(170)

我有一个灰度图像的大小(1920,1080),我试图创建一个遮罩。我用一个外部软件来手动获得兴趣点(多边形)。现在有27个坐标点代表一个多边形在图像的中间。
我使用以下代码创建了一个掩码:

import numpy as np
import matplotlib.pyplot as plt
from skimage.draw import polygon2mask

#image= grayscale with shape (1920,1080)
coordinates = ([1080.15, 400.122], [1011.45, 400.90], .......) #27 points
polygon = np.array(coordinates)
mask = polygon2mask(image.shape, polygon)
result = ma.masked_array(image,  np.invert(mask))
plt.imshow(result)

我面临的问题是输出在错误的位置;它应该在某种程度上居中,因为我从中心取坐标,但它实际上在图像的边缘(底部):

此外,大小似乎有点小,比预期的。我不知道是什么导致这个问题,我一定是做错了什么,在我的代码..请帮助我确定问题。

brvekthn

brvekthn1#

您反转了x和y坐标。polygon2mask坐标的顺序为y,x
新增

coordinates = [[y,x] for [x,y] in coordinates]

在定义坐标之后,您可能会得到预期的结果。

相关问题