Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 947

/ вопрос решён /

Здравствуйте, уважаемые эксперты ! Как можно ускорить работу этого кода ? Можете поподробней расказать про внешний бесплатный модуль QPixels и что такой scanline ?

Приложение:
  1. //**************************************************************************//
  2.  
  3. //**************************************************************************//
  4. i1 := 0;
  5. j1 := 0;
  6. b := x11 + 50;
  7. c := y11 + 8;
  8. for i := x11 to b do
  9. begin
  10. for j := y11 to c do
  11. begin
  12. if (img1.Canvas.Pixels[i, j] = RGB(r, g, bc)) or (img1.Canvas.Pixels[i, j]
  13. = RGB(r2, g2, bc2)) then
  14. begin
  15. img1.Canvas.Pixels[i, j] := RGB(240, 240, 240);
  16. img2.Canvas.Pixels[i1, j1] := img1.Canvas.Pixels[i, j];
  17. end
  18. else
  19. img2.Canvas.Pixels[i1, j1] := RGB(0, 0, 0);
  20. j1 := j1 + 1;
  21. end;
  22. i1 := i1 + 1;
  23. j1 := 0;
  24. end;
  25. //**************************************************************************//
  26. //******************************END*****************************************//
  27. //**************************************************************************//


LaCoSt Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: LaCoSt (статус: Посетитель)
Вопрос отправлен: 23 января 2011, 02:21
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 23 января 2011, 09:49; участников в обсуждении: 2.
LaCoSt

LaCoSt (статус: Посетитель), 23 января 2011, 02:32 [#1]:

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 BytesPerPixel - 1 do // 1, to 4, dep. on pixelformat
begin
Inc(different, Integer(c1^ <> c2^));
Inc(c1);
Inc(c2);
end;
end;
end;

Вот единственный исходник который я смог нарыть.Если кто-нибудь в этом разбирается не могли бы вы написать какие-то коментарии по нему.Так же интересует можно ли сравнивать картинки между собой например вот так img1 = img2 ? И как максимально быстро будет работать сравнение двух картинок ?
min@y™

min@y™ (статус: Доктор наук), 23 января 2011, 09:49 [#2]:

Цитата (LaCoSt):

Вот единственный исходник который я смог нарыть.

Хреново рыл, лопату наточи и тыкай сюда.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

26 января 2011, 01:01: Статус вопроса изменён на решённый (изменил автор вопроса — LaCoSt)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.02 сек.