| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Сравнение двух картинок |
| Автор: fridrih777 24.12.2007, 11:13 |
| Здрасте. Вопросик появился.Как можно сравнить две картинки на цветовую гамму. Т.е. к примеру |
| Автор: Alexeis 24.12.2007, 11:23 |
Сравни попиксельно. А вообще у них разный размер, они хотябы по этому разные |
| Автор: fridrih777 24.12.2007, 11:27 | ||
Ну это я просто пример привёл. А по пиксельно это т.е. к примеру у меня 2 изображения 320*240 то программа должна сравнить каждый пиксель? тяжко!!! Хорошо а как прмерно это можно реализовать?Спасибо! |
| Автор: THandle 24.12.2007, 12:00 |
| fridrih777, через Canvas.Pixels. |
| Автор: fridrih777 24.12.2007, 12:48 |
| |
| Автор: Alexeis 24.12.2007, 12:51 |
Это слишком медленно. BitMap.Scanline[] - возвращает указатель на строку битмапки. |
| Автор: THandle 24.12.2007, 12:53 |
| Alexeis, согласен. Но это, имхо, сложнее. |
| Автор: Alexeis 24.12.2007, 13:03 | ||||
Добавлено через 2 минуты и 50 секунд b2.PixelFormat := pf32bit; - так мы конвертируем битмап в дибсекцию, иначе не видать нам прямого доступа к памяти картинки. CompareMem - сравнивает побитно 2 участка памяти. Добавлено через 6 минут и 36 секунд THandle, Pixels - это мелкомягкий изврат поддержанный борладном, который годиться только для |
| Автор: casinosoftguru 29.12.2008, 05:25 | ||
| 1. Я археолог 2. Копаю по сабжу, сам юзаю этот метод, идеально работает для идеально точных изображений, а я ищу процентное сравнение
|
| Автор: Predator_2004 6.1.2009, 01:26 |
| Есть еще вариант: если файлы имеют равный объем, тогда открыть оба файла в байтовом режиме и сложить байты обоих файлов по модулю два. Если на выходе ноль-файлы равны. |
| Автор: restor999 6.1.2009, 18:41 | ||
Что то я не пойму! |
| Автор: Alexeis 6.1.2009, 19:02 | ||
restor999, это же пример. Он тупо создает 2 пустых битмапа в одном рисует точку по серединке, а дальше сравнивает растры в памяти.
Если точка есть то пишет "различные", если точку не ставлю, то пишет "одинаковые". Для реальных картинок нужно сначала загрузить, а затем точно также сравнить при помощи CompareMem |
| Автор: restor999 6.1.2009, 19:19 |
| Alexeis, а можешь подсказать код на 2 компонента Image (обработчик события нажатие кнопки(onclick)( Что бы он картинки в двух этих компанентах сравнивал)??? подскажи код пожалуйста! |
| Автор: Proxin 7.3.2010, 10:33 |
| о, спасибо. помогли. |
| Автор: x128 8.3.2010, 12:50 |
| В прикрепленном файле пример, я его писал для поиска одного изображения на другом, но суть не сильно меняется. В примере есть возможность задавать ошибку соответствия. |