eXeL@B —› Основной форум —› DLL - сравнение 2х битмапов [разбор алгоритма] |
Посл.ответ | Сообщение |
|
Создано: 12 октября 2012 13:22 · Поправил: KingSise · Личное сообщение · #1 Есть дллка, по идеи она должна сравнивать 2 изображения и выдавать процент похожести. В ней всего одна эксвортированная функция: Address=008D9F30 Section=CODE Type=Export Name=CompareBitmaps Comment=compare 2 Arg Прототип на Си: Code:
Проблемко заключается в следующем: изображения она явно открывает и сравнивает, но результат выдает бесполезный. начало процедуры: Code:
Инициализация генератора, не? Code:
и еще: начало процедуры: 008D9590 /$ 55 PUSH EBP вызывается 2 раза, там видно, что с битмапами она все же что то делает... И в самом конце основной процедуры: Code:
Ненератор случайного байта... Мля...вот его и возвращает функция... Code:
Вот собственно хотелось бы заюзать длл, по коду видно, что CompareBitmaps не только случайные числа генерировать может... Но вот найти хоть что то похожее на результат сравнения не могу. З.ы. дллка полезная, в хозяйстве может пригодиться ☺ c90f_12.10.2012_EXELAB.rU.tgz - compare.rar ----- -=истина где-то рядом=- |
|
Создано: 12 октября 2012 14:19 · Личное сообщение · #2 |
|
Создано: 12 октября 2012 14:27 · Личное сообщение · #3 Сдается мне что она ничего полезного из себя не представляет. Последняя расчитанная переменная [ebp+var_20] записывается здесь Code:
можешь попробовать ее как результат брать |
|
Создано: 12 октября 2012 14:33 · Поправил: ClockMan · Личное сообщение · #4 KingSise пишет: З.ы. дллка полезная, в хозяйстве может пригодиться ☺ капчу сравнивать ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 12 октября 2012 14:59 · Поправил: vden · Личное сообщение · #5 Судя по экспорту, оригинальное название project_dll.dll Написана видимо на D7. char __stdcall CompareBitmaps(HBITMAP a1, HBITMAP a2) Функция чего-то творит с битмапами, применяет один из доступных фильтров Code:
массив фильтров Code:
Если не ошибаюсь результат фильтра как-то сводится к битмапу 16x16. Вот здесь финальное сравнение: Code:
Результат которого не используется. В итоге выдаётся -1 либо Random(255). Может быть библиотека не закончена. | Сообщение посчитали полезным: maxic9 |
|
Создано: 12 октября 2012 15:43 · Поправил: KingSise · Личное сообщение · #6 |
|
Создано: 12 октября 2012 16:14 · Поправил: vden · Личное сообщение · #7 KingSise пишет: докодить недостающую часть реально? Но там же ещё на точке входа задаются какие-то параметры, и нет возможности выбирать фильтры. Так что это скорее всего работать будет плохо. Проще наверно написать заново нормально. По крайней мере сможешь контролировать свои алгоритмы. |
|
Создано: 14 октября 2012 18:35 · Личное сообщение · #8 vden пишет: Так что это скорее всего работать будет плохо. Или вообще не будет работать ;) При первом вызове процедуры будет всегда 0, при повторном (картинки те же) всегда 1 vden пишет: Проще наверно написать заново нормально. Ну не знаю, мне не проще, я например, даже теорию не знаю, как сравнить 2 жопега разного разрешения и притом одна жопега - черно-белая... ----- -=истина где-то рядом=- | Сообщение посчитали полезным: Salabasama |
|
Создано: 14 октября 2012 18:45 · Личное сообщение · #9 |
|
Создано: 13 ноября 2012 12:04 · Личное сообщение · #10 добавил благодарность vden-у Молодец, ближе всех к правде На правах автора этой dll-ки - демо-вариант не получится использовать - там закомментарена последняя строчка в исходнике, в которой нехилые такие вычисления, да еще и с использованием нецелой константы, которую подобрать нереально, не зная алгоритма. |
eXeL@B —› Основной форум —› DLL - сравнение 2х битмапов [разбор алгоритма] |