matplotlib
RGBイメージを読み込んでグレースケールに変換するために使用しようとしています。
matlabではこれを使用します:
img = rgb2gray(imread('image.png'));
でmatplotlibのチュートリアル彼らはそれをカバーしていません。彼らはただ画像を読んだ
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
そして、それらは配列をスライスしますが、それは私が理解しているものからRGBをグレースケールに変換することと同じではありません。
lum_img = img[:,:,0]
numpyまたはmatplotlibに、rgbからgrayに変換する組み込み関数がないとは信じがたいです。これは画像処理の一般的な操作ではありませんか?
imread
5分でインポートされた画像を処理する非常にシンプルな関数を作成しました。それはひどく非効率的ですが、それが私が組み込みのプロフェッショナルな実装を望んでいた理由です。
セバスチャンは私の機能を改善しました、しかし私はまだ組み込みのものを見つけたいと思っています。
matlab(NTSC / PAL)の実装:
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray
gray = np.mean(rgb, -1)
正常に動作します。ありがとう。これを使用しない理由はありますか?なぜ代わりに以下の回答のソリューションを使用するのですか?
np.mean(rgb, -1)
ます。
0.2989 * R + 0.5870 * G + 0.1140 * B
それが標準的な方法だと思います。
gray = np.mean(rgb, -1)
。rgb[...,:3]
それが実際にrgbaである場合は、そこにあるかもしれません。