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配列)を取得できます。
別のスレッド の回答を参照してください。
基本的に:
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
np.dot(rgb[...,:3], [0.299, 0.587, 0.114])