2016-07-03 2 views
0

私は3つ目の配列の作成に一緒に使用したい値の2つの配列を持っています。私は彼らの助けを借りることができる配列のサイズと形状を与えている以下の。他の2つの配列を使用したPython配列の作成

CV Shape = (126,) 

RV Shape = (94,) 

CV Size =126 

RV Size =94 

私が実装しようとした次のコードで、次のようにそれらの値が定義されて置くことにしたいれる配列:

temp=np.empty((np.size(RV),np.size(CV))) 

for i in CV[int(i)]: 
    for j in RV[j]: 
     temp[i,j]=(RV[i],CV[j]) 

これは私に次のような形状を持つ一時配列を与えます: (94,126)

ループはうまくいかず、次のエラーが表示されます。どのように解決するか考えていますか?

Traceback (most recent call last): 

    File 
"C:/Users/Lenovo/PycharmProjects/TestImageRead/Normal/Camera/TurnerSystem/Project.py", line 47, in <module> 

for i in CV[int(i)]: 

TypeError: 'numpy.int32' object is not iterable 

これ以上のコンテキストと情報を提供するために、私はビデオフィードの高密度オプティカルフローを検出しています。 RVとCVは水平位置と垂直位置で、各ピクセルに格納された値のすべてを使用するのではなく、フロー値をサンプリングします。これらの点は効果的に画像上に標本点のグリッドを形成する。 OpenCVチュートリアルから、フレーム全体(640x480)の各ピクセルでのフローの大きさを格納するマグニチュード配列を得ることができました。だから私は何をしたいのRVとCVに格納されているポイントでマグニチュードの値で一時配列を埋めることです。このような

RV及びCVストア値:私は何をしたいかRVのすべての値とをループ [5 10 15 20 25 30 35 40 45 50 55 ...]

ありますCVを使用して、将来の使用のために画像の各点の大きさを一時配列に格納する。

温度= MAG(RV、CV)

+2

正確にあなたが達成しようとしているどのような '私のためのCVで[INT(I)]'と 'J RVで[J]':なしループでその最後の割り当てを達成する方法はnp.meshgrid使用していますか?また、最小のサンプルケースと期待される出力を見てうれしいです。 – Divakar

+1

IIUCでは 'RV'と' CV'からの行と列のインデックスに基づいて要素が選択される配列として 'mag'を使って、' mag [np.ix_(RV、CV)] '。 – Divakar

+1

これはより効率的に行うことができますが、既存のコードを修正することができます。 'for'ステートメントでは、反復処理を繰り返す反復を作成するのを忘れていて、' i'の使用は正しくありません。あなたはたぶん、次のことを意味していました: '私の範囲内(CV.size):' –

答えて

0

コメントは、あなたのループを動作させるために必要があると思い構文の変更に対応しています。

RR, CC = np.meshgrid(RV, CV, indexing='ij') 
temp = mag[RR, CC] 
関連する問題