Muhammet Ali Gülbahçe Ответов: 1

Как добавить соль и перец на изображение в C # ?


Я должен добавить шум к изображению в черно-белом цвете. Вы не могли бы мне помочь?

Что я уже пробовал:

Сначала я попробовал этот код, но не смог добавить черный.
public static  void SaltPepperNoise(Image<Bgr, byte> image, int n)
{
       ////random number generator
       Random random = new Random();
       for (int k = 0; k < n; k++)
       {
         //random pixel to set white color
         int w = random.Next() % image.Width;
         int h = random.Next() % image.Height;
         image[h, w] = new Bgr(255,255,255);
       }
}

Сначала я попробовал этот код, но не смог добавить черный.

Затем я нашел код python и попытался преобразовать его в C#, но Mat black и Mat white также дают ошибку
Mat saltpepper_noise = new Mat(image.Width, image.Height, Emgu.CV.CvEnum.DepthType.Cv8U,3);

            CvInvoke.Randu(saltpepper_noise,new MCvScalar(0), new MCvScalar(255));

            Mat black = saltpepper_noise < 30; //error
            Mat white = saltpepper_noise > 225; //error

            Mat saltpepper_img = (Mat)image.ToBitmap().Clone();

            saltpepper_img.SetTo(new MCvScalar(255),white);
            saltpepper_img.SetTo(new MCvScalar(0), black);

1 Ответов

Рейтинг:
9

phil.o

Вы вставляете только белый цвет из-за этой строки:

image[h, w] = new Bgr(255,255,255);
Если вы хотите добавить черное или белое, то вам нужно получить промежуточное случайное число:
//random pixel to set black or white color
int w = random.Next() % image.Width;
int h = random.Next() % image.Height;
int shade = (random.Next(0, 256) > 127) ? 255 : 0;
image[h, w] = new Bgr(shade, shade, shade);


Muhammet Ali Gülbahçe

Я очень счастлива, большое вам спасибо.Но почему он был больше, чем 127? Я прошу понять меня.

phil.o

Следующая функция при вызове с двумя параметрами возвращает целое число, большее или равное первому параметру и строго меньшее второго параметра. Таким образом, он будет возвращать значение от 0 до 255 (включительно). Если это значение больше 127, мы выбираем белый (255); в противном случае мы выбираем черный (0).

Maciej Los

5ed!