2016-06-29 11 views
0

Pythonとおそらくnumpyを使用すると、(x、y、pixelValue(x、y))形式のすべての座標のリストをどのように生成できますか?私は、ループは、以下を使用するためにこれを達成することができますnumpyで2D画像行列からすべての(x、y、ピクセル値)タプルのリストを生成する方法は?

img = cv2.imread('messi5.jpg',0) 

data = [] 

for x in range(img.shape[1]): 
    for y in range(img.shape[0]): 
     data.append((x, y, data[x, y])) 

が、そうすることは、私のイメージは、約4万個の画素が含まれていreeeeaally長い時間がかかります。ありがとう!

+1

なぜそれをしたいですか?あなたは解決しようとしている問題は何ですか? '' 'data''は(1-d)Python' '' list'''です:data [x、y] '' 'は意味がありません。 '' 'img''に直接アクセスしてみませんか? – wwii

+1

これに非常に近いと思われます:http://stackoverflow.com/q/38073791/3293881 – Divakar

+0

それは非常に近いです。私はスタックオーバーフロールーキーです。私は2つの画像を減算し、次にscipy.optimize()を使用して3Dカーブを結果にフィットさせますが、そのためには座標のリストを入力する必要があります。プロセス全体をやる方が簡単かもしれませんが、まずこれを試していました。 –

答えて

1

numpy.ndenumerateは、時間のないジェネレータを作成します。あなたは本当に必要ならばそれをリストに変換することができます(???)。

>>> np.ndenumerate(np.eye(2)) 
<numpy.lib.index_tricks.ndenumerate at 0x20d485f8> 

>>>for elem in np.ndenumerate(np.eye(2)): 
... print elem 
... 
((0L, 0L), 1.0) 
((0L, 1L), 0.0) 
((1L, 0L), 0.0) 
((1L, 1L), 1.0) 

>>>list(np.ndenumerate(np.eye(2))) 
[((0L, 0L), 1.0), ((0L, 1L), 0.0), ((1L, 0L), 0.0), ((1L, 1L), 1.0)] 
+0

ありがとう! –

関連する問題