沿路径的示例数组

时间:2013-03-02 05:18:57

标签: numpy matplotlib scipy

我有这个二进制图片:

img

为0和1值的numpy数组。

我想在路径上的每10个像素上对其进行采样,例如:

img

我知道如何通过切割数组来对正交对象进行采样,但我不知道如何处理不规则形状,并获得均匀分布的“点”集。

1 个答案:

答案 0 :(得分:2)

您可以使用OpenCV按findContours查找路径。以下是演示代码x& y是路径上像素的坐标。

import numpy as np
import cv2
import pylab as pl
img = cv2.imread("img.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret,img = cv2.threshold(img,127,255,0)
r = cv2.findContours(255-img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
c = r[0][0]
x, y = cc[::10, 0, 0], cc[::10, 0, 1]
pl.figure(figsize=(10, 10))
pl.imshow(img, cmap="gray", interpolation="nearest")
pl.plot(cc[::10, 0, 0], cc[::10, 0, 1], "o")

这是输出:

enter image description here

我只是从路径每10个点选择一个点,因此两个附近点之间的距离不一样。但是你可以使用一些插值方法将路径转换为平滑曲线,然后找到等距离点。