web-dev-qa-db-ja.com

Numpyを使用してRGBピクセル配列をグレースケールに変換します

Numpyを使用してrgbピクセル値のサイズ(x、y、3)配列をグレースケールピクセル値のサイズ(x、y、1)配列に変換する最良の方法は何ですか?

[r、g、b]配列を取得してグレースケール値を返すことができる関数rgbToGrey(rgbArray)があります。 Numpyと一緒に使用して、配列の3次元をサイズ3からサイズ1に縮小します。

これどうやってするの?

注:元の画像があり、Pillowを使用して最初にグレースケールできれば、これは非常に簡単ですが、持っていません。

更新:

私が探していた関数はnp.dot()でした。

この質問への回答から

次の式でrgbをグレースケールに変換するとします:

.3r * .6g * .1b =グレー、

np.dot(rgb[...,:3], [.3, .6, .1])を実行して、探しているもの(グレーのみの値の2D配列)を取得できます。

8
SealedSaint

別のスレッド の回答を参照してください。

基本的に:

gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
13
lange