Нужно разбить картинку на пиксели и собрать все пиксели в MD5-хэш

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
return diff.ToString(); попробуй
 

PostCard

Client
Регистрация
22.02.2015
Сообщения
22
Благодарностей
4
Баллы
3
Код:
var hash1 =  project.Variables["hash1"].Value; // 23423423423
var hash2 =  project.Variables["hash2"].Value;  // 34534534534
var diff = ImageHashing.ImageHashing.Similarity(hash1,hash2);
return diff.ToString();
Пишет: Выполнение действия CSharp OwnCode Путь имеет недопустимую форму.
Это что такое?
Если сравниваешь через картинки, а не через переменные с md5, то все сравнивает, если вместо Hash2 b Hash1 вставлять цыфры, то тоже все сравнивает, а если с переменными, то выдает ошибку. ???? Как писать переменные.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
var hash1 = Convert.ToUInt32(project.Variables["hash1"].Value);
Аналогично для второго хеша
 
  • Спасибо
Реакции: PostCard

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
ulong hash1 = ulong.Parse(project.Variables["hash1"].Value);
ulong hash2 = ulong.Parse(project.Variables["hash2"].Value);
var diff = ImageHashing.ImageHashing.Similarity(hash1, hash2);
return diff;
 
  • Спасибо
Реакции: samsonnn и PostCard

PostCard

Client
Регистрация
22.02.2015
Сообщения
22
Благодарностей
4
Баллы
3
Оба варианта рабочии. Спасибо!!
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
привет я пробую этот код для сравнения и выдает ошибку имя ImageHashing отсуствует в текушем контексте что я не так делаю?
upload_2017-6-5_10-54-44.png
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 447
Баллы
113

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
подключил я dll -ку через gac сейчас выдает другую ошибку входная строка имела неверный формат в чем может быть причина?
upload_2017-6-5_15-15-18.png
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 447
Баллы
113

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 447
Баллы
113
незнаю что у вас не так, я проверил у меня работает
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
незнаю что у вас не так, я проверил у меня работает
нашел причину по пробовал хешы от razdab 23423423423 код срабатовает а если ставлю хеш такова рода ec0cd320ce6a56938aea42fb2b9c959b код выдает ошибку вопроа как получить хеш в таком виде 23423423423
 

PostCard

Client
Регистрация
22.02.2015
Сообщения
22
Благодарностей
4
Баллы
3
Код:
var hash1 =  ImageHashing.ImageHashing.AverageHash("1.jpeg"); // 23423423423
Так получаем в переенную hash1 хэш картинки и сохраняем в переменную.
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
Код:
var hash1 =  ImageHashing.ImageHashing.AverageHash("1.jpeg"); // 23423423423
Так получаем в переенную hash1 хэш картинки и сохраняем в переменную.
это я понел но как получить такой хеш я например использую такой код
//Получаем значение строки из переменной
string input = project.Variables["directtiva_Pictures"].Value;

// Создаем объект этого класса.
System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
// Преобразуем входную строку в массив байт и вычисляем хэш
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
StringBuilder md5hash = new StringBuilder();
// Преобразуем каждый байт хэша в шестнадцатеричную строку
for (int i = 0; i < data.Length; i++)
{
//преобразуем элемент в шестнадцатиричную строку длиной в два символа
md5hash.Append(data.ToString("x2"));
}
//Возвращаем MD5 хеш для строки
return md5hash.ToString();
на выходе получаю хеш в таком виде 93dda154a1aba849394ddab92e494d37 но по какой то причине такии хешы код
ulong hash1 = ulong.Parse(project.Variables["a"].Value);
ulong hash2 = ulong.Parse(project.Variables["b"].Value);
var diff = ImageHashing.ImageHashing.Similarity(hash1, hash2);
return diff;
не работает выдает ошибку
 

PostCard

Client
Регистрация
22.02.2015
Сообщения
22
Благодарностей
4
Баллы
3
У меня лежит картинка 1.jpg на диске D жесткого, я кодом
Код:
var hash1 =  ImageHashing.ImageHashing.AverageHash(@"D:\1.jpg"); // 23423423423
    return hash1;
Сохраняю получившийся хэш ( например 23423423423) в переменную hash1
Берем другую картинку 2.jpg так же как и у первой берем хэш кодом
Код:
var hash2 =  ImageHashing.ImageHashing.AverageHash(@"D:\2.jpg"); // 23423423423
    return hash2;
Затем кодом
Код:
ulong hash1 = ulong.Parse(project.Variables["hash1"].Value);
ulong hash2 = ulong.Parse(project.Variables["hash2"].Value);
var diff = ImageHashing.ImageHashing.Similarity(hash1, hash2);
return diff;
сравниваем картинки по хэшу. И в переменной diff получаем процент схожести.


Ты получаешь другим кодом хэш (md5) для этой библиотеки используй код выше
 
  • Спасибо
Реакции: artur23 и steklarul

photograph

Client
Регистрация
04.09.2015
Сообщения
11
Благодарностей
4
Баллы
3
  • Спасибо
Реакции: Radzhab

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Я могу
 
  • Спасибо
Реакции: photograph

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Подскажите, а если у меня шесть картинок, как сделать код, чтоб он сравнивал поочередно пары картинок и выводил результат в %, той пары у которой % схожести максимальный?
Код:
var data = ImageHashing.ImageHashing.Similarity(new Bitmap("0.jpeg"), new Bitmap("1.jpeg"), new Bitmap("2.jpeg"), new Bitmap("3.jpeg"), new Bitmap("4.jpeg"), new Bitmap("5.jpeg"));
Сравнивать в таких комбинациях картинки
0-1|0-2|0-3|0-4|0-5
1-2|1-3|1-4|1-5
2-3|2-4|2-5
3-4|3-5
4-5
P.S. Решилось сниппетом.
 
Последнее редактирование:

gomoney

Client
Регистрация
27.09.2009
Сообщения
124
Благодарностей
37
Баллы
28

gomoney

Client
Регистрация
27.09.2009
Сообщения
124
Благодарностей
37
Баллы
28
сегодня капчи сравнивал на 7ой версии и где-то на 1000-ом запросе
45442

C#:
Bitmap captcha = (Bitmap) Image.FromFile(project.Variables["Captcha_Image"].Value);

var hash1 = ImageHashing.ImageHashing.AverageHash(captcha);

project.Variables["hash"].Value = hash1.ToString();
возник вопрос память сама освобождается, когда кубик выполниться?

или надо дописать и поможет ли такой вариант?
captcha.Dispose();
 

iicemaster

Client
Регистрация
20.01.2022
Сообщения
43
Благодарностей
3
Баллы
8
У меня лежит картинка 1.jpg на диске D жесткого, я кодом
Код:
var hash1 =  ImageHashing.ImageHashing.AverageHash(@"D:\1.jpg"); // 23423423423
    return hash1;
Сохраняю получившийся хэш ( например 23423423423) в переменную hash1
Берем другую картинку 2.jpg так же как и у первой берем хэш кодом
Код:
var hash2 =  ImageHashing.ImageHashing.AverageHash(@"D:\2.jpg"); // 23423423423
    return hash2;
Затем кодом
Код:
ulong hash1 = ulong.Parse(project.Variables["hash1"].Value);
ulong hash2 = ulong.Parse(project.Variables["hash2"].Value);
var diff = ImageHashing.ImageHashing.Similarity(hash1, hash2);
return diff;
сравниваем картинки по хэшу. И в переменной diff получаем процент схожести.
Подгрузку путей для изображений из переменных сделал
А вот как сделать чтобы переменные сравнивались списком а не по одному?
 
Последнее редактирование:

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
172
Баллы
43
base64 to ByteArray to PictureBox to md5hash:
byte[] bytes = Convert.FromBase64String(project.Variables["base64"].Value);
MemoryStream ms = new MemoryStream(bytes);
Image returnImage = Image.FromStream(ms);
pictureBox.Image = returnImage;
project.Variables["md5hash"].Value = ImageHashing.ImageHashing.AverageHash(returnImage).ToString();
 
  • Спасибо
Реакции: Sho

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
На маленьких картинках хеши (все) не справляются.
К слову.
 
  • Спасибо
Реакции: djaga

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
  • Спасибо
Реакции: Sho

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
В моей задаче были от 10пк до 50пк.
Все хеши (их около 4-5) давали не верный результат каждое 2-3 сравнение.
да хеши вообще очень условное сравнение дают. можно расценивать их как поиск на вхождению в группу , но не как точный поиск.
 
  • Спасибо
Реакции: djaga

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)