12

ポイントのPythonリスト(x / y座標)があります:

   [(200, 245), (344, 248), (125, 34), ...]

これは、2D平面上の輪郭を表します。平滑化、補間などにいくつかのnumpy / scipyアルゴリズムを使用したいと思います。通常、入力としてnumpy配列が必要です。たとえばscipy.ndimage.interpolation.zoom

ポイントのリストから正しいnumpy配列を取得する最も簡単な方法は何ですか?

編集:私は私の質問に「画像」という言葉を追加しました、それが今はっきりしていることを願っています、それが何らかの誤解を招くものであったならば、私は本当に申し訳ありません。私が意味したことの例(バイナリイメージ配列を指す)。

入力:

[(0, 0), (2, 0), (2, 1)]

出力:

[[0, 0, 1],
 [1, 0, 1]]

ここで受け入れられた答えを四捨五入すると、実際のサンプルになります。

import numpy as np

coordinates = [(0, 0), (2, 0), (2, 1)]

x, y = [i[0] for i in coordinates], [i[1] for i in coordinates]
max_x, max_y = max(x), max(y)

image = np.zeros((max_y + 1, max_x + 1))

for i in range(len(coordinates)):
    image[max_y - y[i], x[i]] = 1
4

3 に答える 3

9

ああ、今はもっといいので、あなたはあなたが埋めたいすべてのポイントを持っています...そしてそれは非常に簡単です:

image = np.zeros((max_x, max_y))
image[coordinates] = 1

最初に配列を作成することもできますが、必須ではありません。

于 2012-10-01T12:09:27.750 に答える
0
numpy.array(your_list)

numpyには、読んでみるべき非常に広範なドキュメントがあります。オンラインで見つけるか、REPLでhelp(obj_you_want_help_with)(例)と入力して見つけることができます。help(numpy)

于 2012-10-01T09:39:13.357 に答える
0

Jon ClementsとDunesが言ったことに基づいて、

new_array = numpy.array([(200, 245), (344, 248), (125, 34), ...])

最初の列にx座標が含まれ、2番目の列にy座標が含まれる2次元配列が得られます。配列は、次のようにさらに別々のx配列とy配列に分割できます。

x_coords = new_array[:,0]
y_coords = new_array[:,1]
于 2012-10-01T10:53:21.323 に答える