2012-11-09 14 views
22

(r + g + b)/3 yöntemini kullanarak RGB görüntüsünü (3 kanal) gri tonlamaya nasıl dönüştürürüm? Bir örnek sayfasından bak: http://www.imagemagick.org/Usage/color_mods/#grayscale ancak istenen yöntemi: ImageMagick komut satırında RGB'yi Gri Tonlamaya dönüştürme

convert test.png -fx '(r+g+b)/3' gray_fx_average.png 

bana yanlış sonuç verdi - sonuçlandı görüntü hala 3 kanalları vardır.

Bir komutu çalıştırarak şu komutu kontrol edebilirsiniz: identify -format "%[colorspace] <== %f\n" *.png.

cevap

50

convert <img_in> -set colorspace Gray -separate -average <img_out> benim için her tür resim için en iyi sonucu verir doğrulayın. toplu olarak

+0

Teşekkür egor7 :) egor7 komut bile sadece ' dönüştürmek kullanırken çok koyu görüntüleri dönen bir sorunu var imagemagic'den 6.5.7 ile iyi çalışır - colorspace Gri '. Ben heroku (imagemagick 6.5.8) üzerinde raylar + paperclip kullanıyorum ve 'convert' komutunun birçok farklı varyantıyla çok karanlık görüntüler elde ediyordum. Bu harika çalıştı;) Tekrar teşekkürler. –

+5

En azından ImageMagick'in daha yeni sürümlerinde, '-set colorspace ...' -colorspace 'olmalıdır. –

7

gri tonlama efektleri uygulamak (r+g+b)/3 yöntemi kullanarak, ancak resim sRGB'de (bu yöntemle için beklenen davranıştır ) kalacaktır. ile birlikte -fx komutunu belirtmeniz gerekir.

convert test.png -fx '(r+g+b)/3' -colorspace Gray gray_fx_average.png 

identify -format "%[colorspace] <== %f\n" gray_fx_average.png

Gray <== gray_fx_average.png 
1

Fish kabuğunda görüntüleri dönüştürmek:

for file in *.jpg; convert -colorspace Gray $file $file; end;