matplotlib
Bir RGB görüntüde okumak ve gri tonlamaya dönüştürmek için kullanmaya çalışıyorum .
Matlab'da bunu kullanıyorum:
img = rgb2gray(imread('image.png'));
Gelen matplotlib öğretici bunu kapsamaz. Sadece görüntüde okuyorlar
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
ve sonra diziyi dilimliyorlar, ama bu RGB'yi anladığımdan gri tonlamaya dönüştürmekle aynı şey değil.
lum_img = img[:,:,0]
Numpy veya matplotlib'in rgb'den griye dönüştürmek için yerleşik bir işlevi olmadığına inanmak zor. Bu görüntü işlemede yaygın bir işlem değil mi?
imread
5 dakika içinde içe aktarılan görüntü ile çalışan çok basit bir fonksiyon yazdım . Bu korkunç derecede verimsiz, ama bu yüzden yerleşik bir profesyonel uygulama umuyordum.
Sebastian işlevimi geliştirdi, ancak hala yerleşik olanı bulmayı umuyorum.
matlab (NTSC / PAL) uygulaması:
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)
çalışıyor. Teşekkürler. Bunu kullanmamak için bir neden var mı? Bunun yerine çözümleri aşağıdaki cevaplarda neden kullanayım?
np.mean(rgb, -1)
.
0.2989 * R + 0.5870 * G + 0.1140 * B
Bunu yapmanın standart yolu olduğunu varsayıyorum.
gray = np.mean(rgb, -1)
. Belkirgb[...,:3]
aslında rgba ise.