将图像感兴趣点转换为坐标



我有一些具有给定高度和宽度的图像,以及作为整数值列表的POI列表。 我想将此 POI 转换为 (x, y( 坐标列表。我知道这可以通过内置的for循环来完成。我正在寻找一种使用np,枕头,opencv2或朋友的更有效的方法。

下面是一个示例:

Image WxH: 1024x1024
POIs: [10, 1025, ...]
Result: [(10, 0), (1, 1), ...]

这可以通过列表理解简洁地完成:

WIDTH = 1024
pois = [10, 1025, ...]
coordinates = [(p % WIDTH, p // WIDTH) for p in pois]

或者,您可以使用内置的divmod 同时执行除法和余数计算。但是,这将在 revere 顺序中从您期望的内容中生成对,因此您需要添加对reverse的额外调用:

coordinates = [reverse(divmod(p, WIDTH)) for p in pois]

虽然可能更有效率,但结果列表的组成可能不太清楚。

有一个特定的功能:

np.unravel_index(pois, (ysize, xsize), order='C')
>>> (array([0, 1]), array([10,  1]))

这是预期的 y,x 坐标(第一个数组表示 y,第二个数组表示 x(。

还有相反的功能,np.ravel_multi_index().

最新更新