Как оцифровать изображение с помощью im4java?

Я хочу превратить мое цветное изображение в черно-белое. По сути, я хочу вызвать эту команду ImageMagick:

convert input.png -threshold 80% output.png

но с помощью библиотеки im4java. Мне известен метод IMOperation.threshold(), но я не знаю, как написать эквивалент вышеупомянутой команды, используя этот метод. Метод перегружен:

threshold() 

threshold(java.lang.Integer red) 

threshold(java.lang.Integer red, java.lang.Integer green) 

threshold(java.lang.Integer red, java.lang.Integer green, java.lang.Integer blue)

threshold(java.lang.Integer red, java.lang.Integer green, java.lang.Integer blue,
  java.lang.Integer opacity) 

threshold(java.lang.Integer red, java.lang.Integer green, java.lang.Integer blue,
  java.lang.Integer opacity, java.lang.Boolean percent) 

Я пытался вызвать разные перегрузки метода, используя разные значения в качестве аргументов, но ни одно из них не дало хорошего результата (я обычно получаю либо полностью белое изображение, либо полностью черное изображение).

Так что такое im4java, эквивалентный "порогу 80%"?

2 ответа

Решение

Видимо, мне нужно было использовать blackThreshold:

op.blackThreshold(80.0, true);

Я не уверен, что если это эквивалентно команде ImageMagick, которую я указал, вывод кажется немного другим, но для всех практических целей он дает мне то, что мне нужно.

На всякий случай вы рассматриваете другие Java-фреймворки. Использование Marvin Framework для обработки изображений:

MarvinImage image = MarvinImageIO.loadImage('image.jpg');
blackAndWhite(image, 30);

Пример вывода относительно разных уровней BW:

введите описание изображения здесь

Другие вопросы по тегам