2016-05-17 8 views
0

私は顔のjpg画像を持っています。ピクセル単位で画像にアクセスする必要があります(各ピクセルにどのような値があるかを知る必要があります)。 。Python - numpy配列からの画像が真のピクセルを失う

image = Image.open("pic.jpg") 
image = np.array(image) 

まず、アレイ(473,354,3)の形状はどうしてですか?それは私には意味がありません。

私は

plt.imshow(image.reshape(473, -1)) 
plt.show() 

を行うと、私は、赤だけで青と黄色の色で構成され、以下のように見える画像を取得(および3の混合物を?)

これがあることを意味配列の値は、エッジ検出の決定に確実に使用できる値ではありません。

どうすればよいですか?

enter image description here

私は画素値が元の画像の真の色を反映する、上記のようではありません。

実際の写真の背景はちょっと白ですが、私はそれらと他のすべてのピクセル値をそのままにしておきたいので、アルゴリズムを実装できます。

答えて

1

3は、各色(青、緑の赤)が配列内に独自のエントリを持つためです。

エッジ検出には、画像をB & Wに縮小することをお勧めします。OpenCVにはトリックを行うcv2.cvtColor(image、cv2.COLOR_BGR2GRAY)があります。

+0

So(473,354,3)は、高さが473、幅が354、配列の各値が3タプルであることを意味しますか? – Jobs

+0

@Jobs。また、表示されている色は実際の画像の色ではありませんが、高い値のための特定の色を示すカラーマップです。したがって、寸法(h、w、(RGB))で画像を入力すると、おそらく赤の値だけが考慮されます。高い値(赤)がある場合は赤、低い値(赤)の場合は青が表示されます。おそらく黒と白に変換し、色を文字通り(または白黒のカラーマップに)変えないでください。 – syntonym

+0

ありがとう!それは理にかなっている。だから今私は正常に仕事を達成した - 私の写真の背景を白に変える。画像のサイズは60 kbから20 kbに減少しました。あなたはなぜ知っていますか?これは正常/期待ですか? @シンタムとチャールズ。 – Jobs

関連する問題