1

私はこのバイナリイメージを持っています:

img

0と1の値のnumpy配列として。

次のように、パスに沿って10ピクセルごとにサンプリングします。

img

配列をスライスして直交オブジェクトをサンプリングする方法は知っていますが、不規則な形状で何をすべきかわからず、「点」のセットが均等に分散されています。

4

1 に答える 1

2

OpenCVを使用して、でパスを見つけることができますfindContours。これがデモコードで、xyはパス上のピクセルの座標です。

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")

出力は次のとおりです。

ここに画像の説明を入力してください

パスから10ポイントごとに1つのポイントを選択するだけなので、近くの2つのポイント間の距離は同じではありません。ただし、いくつかの内挿法を使用してパスを滑らかな曲線に変換し、等距離点を見つけることができます。

于 2013-03-02T13:28:45.557 に答える