Создание хэша изображения - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день!На хабре есть статья о создании хэша изображения: https://habrahabr.ru/post/120562/. И есть реализация данного алгоритма на C++, который я не знаю к сожалению: http://robocraft.ru/blog/computervision/537.html. Помогите пожалуйста реализовать данный алгоритм в C#

Решение задачи: «Создание хэша изображения»

textual
Листинг программы
byte[] GetHashImage(Image img)
{
    // 1. изменяем размер изображения
    int width = 8;
    int height = 8;
 
    var newImg = new Bitmap(img, new Size(width, height));
    
    // 2. получаем градиент серого
    var bytes = new List<byte>();
 
    for (int i = 0; i < newImg.Width; i++)
        for (int j = 0; j < newImg.Height; j++)
        {
            var pixel = newImg.GetPixel(i, j);
            bytes.Add((byte)((pixel.R + pixel.G + pixel.B) / 3));
        }
 
    // 3. на основе порогового значения получаем массив бит
    var avarage = bytes.Average(b => b);
 
    var bits = new BitArray(bytes.Select(b => b > avarage).ToArray());
 
    // 4. биты переводим в байты
    var result = new byte[(int)Math.Round((double)bits.Count / 8)];
 
    bits.CopyTo(result, 0);
 
    return result;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы