2016-11-16 34 views
2

イメージを枕を使用してnumpy配列としてロードし、得られたnumpy配列の次元は(184,184,4)です。つまり、各ピクセルが184x184ピクセルのイメージです。 RGBAディメンションRGBA numpy配列をバイナリ2d numpy配列に変換する

私のアプリケーションは、ピクセルが黒であるかどうかを知る必要があるだけで、0,1の184x184のnp配列が必要です。

私はnumpyと特に画像操作に慣れていないので、もっと速い方法があるかどうかを知りたいと思っていました。

私はループ内の各ピクセルをチェックするという単純な実装を試みましたが、コストがかかりすぎるようです。

答えて

2

正しく理解すると、形状(184,184,4)の配列があり、最終寸法が[0,0,0,0]に等しいかどうかに応じて形状(184,184)のブール値の配列を取得したいとします。 ]

image = np.random.randint(0, 255, size=(184, 184, 4)) #Generate random image 
isBlack = np.int64(np.all(image[:, :, :3] == 0, axis=2)) 

完了!

しかし、どのように機能しますか?それは魔法のようです!ナンシーは魔法のようなものです。それが私たちが好きな理由です。画像==

  • 0変換(184,184,4)ブールアレイへの各数は、この場合0
  • に等しいかどうかに応じて、我々は[画像を使用する:この場合、:、:3 ]を指定すると、第4番目の数値が除外されます。
  • np.allは、すべての要素が0に等しいかどうかを尋ねます。
  • axisパラメータは、見る軸を変更します。第3軸は番号2です。
+0

どうすればTrueまたは偽です。 –

+0

isBlack = np.int16(np.all(image == 0、axis = 2))) –

+0

また、最終的な次元を[0,0,0、<この場所については気にしません>] –

関連する問題