2016-11-24 11 views
-1

私は、Python 2.7を使用していますし、最後にnumpyの配列にこのように見えることを私はランダムにOpenCVの内の領域を生成します。numpy配列内の隣接要素を同じ要素で「タグ付け」する方法はありますか?

0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 1 1 0 0 
    0 0 0 0 0 0 0 0 0 0 1 1 0 0 
    0 0 0 0 0 0 0 0 0 0 0 1 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 1 1 1 0 0 0 0 0 0 
    0 0 0 0 0 1 1 1 0 0 0 0 0 0 
    0 0 0 0 0 1 1 0 0 0 0 0 0 0 
    0 0 0 0 0 1 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 

は私が実際に大きな行列と協力し、5つの領域にまで生成することができます。 私は何をしたい、このようになります。第2の行列を生成し、生成行列と「グループ」の領域を読み取ることである。最後に、私は5番スポットで行列を持っているのであれば

0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 1 1 0 0 
    0 0 0 0 0 0 0 0 0 0 1 1 0 0 
    0 0 0 0 0 0 0 0 0 0 0 1 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0 0 0 0 2 2 2 0 0 0 0 0 0 
    0 0 0 0 0 2 2 2 0 0 0 0 0 0 
    0 0 0 0 0 2 2 0 0 0 0 0 0 0 
    0 0 0 0 0 2 0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 

を。 私はPythonにはかなり新しいですが、どういうわけかこれは簡単な方法です。私は誰かが私を助けることができるといいですあなたが近所にある要素を検索したい場合は

structure = [[1,1,1],[1,1,1],[1,1,1]] 

:scipyのダウンロードで

+2

申し訳ありません、これは無料コード作成サービスではありません。努力とコードを示す必要があります。それは私が「簡単に」(これは完全に主観的である)簡単な方法ではないと思っていましたが、あなたのグループを特定するための深い最初の検索や幅の広い検索を調べることをお勧めします1これは、グラフ理論を使用してグラフの接続されたコンポーネントを識別して解決することもできます。 – Julien

+0

@Julien Bernu私はここで間違っているかもしれませんが、彼は自由なコードではなく方向性を求めているようです。既に発明されていると思われる場合でも、ホイールを再発明する上であなたの努力を示す必要はありますか? – Headcrab

+0

@Headcrabええこれは細い線です...実際にこの車輪がすでに存在していることを私が知らなかったことを見渡すと、何があっても少なくとも少しは努力しなければならないと主張することができます。車輪を発明しようとしているか、誰かがすでにそれを発明しているかどうかを調べる努力をしている。 – Julien

答えて

4

scipy.ndimage.labelあなたは、たとえば、グループに属する要素と評価構造を定義する必要がまさにそれ

を行います対角線を含む

structure = [[0,1,0],[1,1,1],[0,1,0]] 

1点の左/右/上/下だけが必要な場合は、この関数は2つの値を返します。最初のものは要求された配列であり、2番目のものは見つかった "ラベル"の数です。

この文脈ではscipy.ndimage.measurementsという便利な機能があります。

関連する問題