Как оцифровать изображение с помощью 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: