Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.11.2011, 17:04
Аватар для timeless
timeless timeless вне форума
Прохожий
 
Регистрация: 27.06.2008
Сообщения: 36
Репутация: 12
По умолчанию Сравнение изображений

Хочу написать себе программку для нечеткого сравнения изображений. Для начала сравниваю две картинки размером 64x64 (приложены) с помощью найденного в интернете кода. В этих изображениях 256 разных пикселей, но счетчик показывает 384. Почему так происходит? Я раньше не сталкивался с указателями и не совсем понимаю как работает этот код.

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   b1, b2: TBitmap;
   c1, c2: PByte;
   x, y, i,
   different: Integer; // Counter for different pixels
begin
   b1 := Image1.Picture.Bitmap;
   b2 := Image2.Picture.Bitmap;
   Assert(b1.PixelFormat = b2.PixelFormat); // they have to be equal
  different := 0;
   for y := 0 to b1.Height - 1 do
   begin
     c1 := b1.Scanline[y];
     c2 := b2.Scanline[y];
     for x := 0 to b1.Width - 1 do
       for i := 0 to 3 - 1 do // 1, to 4, dep. on pixelformat
      begin
         Inc(different, Integer(c1^ <> c2^));
         Inc(c1);
         Inc(c2);
       end;
   end;
showmessage(inttostr(different));
end;
Вложения
Тип файла: zip test.zip (412 байт, 20 просмотров)
Ответить с цитированием
  #2  
Старый 05.11.2011, 21:34
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Код:
       for i := 0 to 3 - 1 do // 1, to 4, dep. on pixelformat
Данная строка подразумевает, что оба битмапа имеют формат pf24bit, что конечно не обязательно верно.
Указанный код работает и считает верно. Отличных друг от друга байт (не пиксел) 384. Изучи способ хранения пиксел при разном цветовом разрешении.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 05.11.2011 в 21:40.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025