Рубрики

Обработка изображений на Java | Установите 3 (преобразование цветного изображения в черно-белое изображение)

Мы настоятельно рекомендуем ссылаться на этот пост ниже.

В этом наборе мы будем преобразовывать цветное изображение в изображение в оттенках серого.
Примечание (подумайте интуитивно): в полутоновом изображении альфа-компонент изображения будет таким же, как и исходное изображение, но RGB будет изменен, т. Е. Все три компонента RGB будут иметь одинаковое значение для каждого пикселя.

Алгоритм:

  1. Получить значение RGB пикселя.
  2. Найти среднее значение RGB, т. Е. Avg = (R + G + B) / 3
  3. Замените значения R, G и B пикселя на среднее значение (Avg), рассчитанное на шаге 2.
  4. Повторите шаги с 1 по 3 для каждого пикселя изображения.

Реализация вышеуказанного алгоритма:

// Java-программа для демонстрации преобразования цвета в оттенки серого

import java.io.File;

import java.io.IOException;

import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;

  

public class Grayscale

{

    public static void main(String args[])throws IOException

    {

        BufferedImage img = null;

        File f = null;

  

        // читать изображение

        try

        {

            f = new File("G:\\Inp.jpg");

            img = ImageIO.read(f);

        }

        catch(IOException e)

        {

            System.out.println(e);

        }

  

        // получаем ширину и высоту изображения

        int width = img.getWidth();

        int height = img.getHeight();

  

        // преобразовать в оттенки серого

        for (int y = 0; y < height; y++)

        {

            for (int x = 0; x < width; x++)

            {

                // Здесь (x, y) обозначает координату изображения

                // для изменения значения пикселя.

                int p = img.getRGB(x,y);

  

                int a = (p>>24)&0xff;

                int r = (p>>16)&0xff;

                int g = (p>>8)&0xff;

                int b = p&0xff;

  

                // рассчитать среднее

                int avg = (r+g+b)/3;

  

                // заменить значение RGB на avg

                p = (a<<24) | (avg<<16) | (avg<<8) | avg;

  

                img.setRGB(x, y, p);

            }

        }

  

        // написать изображение

        try

        {

            f = new File("G:\\Out.jpg");

            ImageIO.write(img, "jpg", f);

        }

        catch(IOException e)

        {

            System.out.println(e);

        }

    }

}

Примечание. Этот код не будет работать в онлайн-среде IDE, поскольку для него требуется изображение на диске.

Inp.jpg

Out.jpg

В следующем наборе мы научимся конвертировать цветное изображение в негативное изображение в JAVA.

Эта статья предоставлена Пратиком Агарвалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Обработка изображений на Java | Установите 3 (преобразование цветного изображения в черно-белое изображение)

0.00 (0%) 0 votes