2012-11-09 19 views
22

Jak przekonwertować obraz RGB (3 kanały) na obraz w skali szarości za pomocą metody (r + g + b)/3? patrzę za pośrednictwem strony Przykłady: http://www.imagemagick.org/Usage/color_mods/#grayscale ale pożądana metoda:Konwertuj RGB na skalę szarości w wierszu polecenia ImageMagick

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

dał mi zły wynik - jej obraz ma jeszcze 3 kanały. Można to sprawdzić, wykonując polecenie: identify -format "%[colorspace] <== %f\n" *.png.

Odpowiedz

50

convert <img_in> -set colorspace Gray -separate -average <img_out> daje najlepszy wynik dla każdego obrazu dla mnie.

+0

Dzięki egor7 :) komenda egor7 działa dobrze nawet z ImageMagick 6.5.7, który ma problem z powrotem bardzo ciemne obrazy przy użyciu tylko 'konwertować - colorspace Szary '. Używam rails + paperclip na heroku (imagemagick 6.5.8) i otrzymywałem bardzo ciemne obrazy z dużą ilością różnych wariantów polecenia 'convert'. Ta zadziałała świetnie;) Jeszcze raz dziękuję. –

+5

Przynajmniej w nowszych wersjach ImageMagick, wydaje się, że '... -set colorspace ...' powinno być '-colorspace'. –

7

Metoda zastosuje efekt skali szarości, ale obraz pozostanie w sRGB (, co jest oczekiwanym zachowaniem dla tej metody). Musisz podać żądane colorspace wraz z poleceniem -fx.

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

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

Gray <== gray_fx_average.png 
1

na konwertowanie obrazów w Fish skorupy:

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

Powiązane problemy