AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bilder vergleichen -> optimiertes verfahren gesucht!
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder vergleichen -> optimiertes verfahren gesucht!

Ein Thema von alleinherrscher · begonnen am 16. Jul 2005 · letzter Beitrag vom 18. Jul 2005
 
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 16. Jul 2005, 20:55
Hi@all!

Also erstmal danke für die ganzen antworten!

@Jan: Ich verstehe nicht, warum deine Routine schneller gehen soll...du geht doch per pixels anweisung das ganzen Bild 2 mal durch, dadurch müsste es doch auch im endeffekt doppeltsolange dauern.

Ich benutzte nun die g32 lib. die funktion ist super, dauert inetwa noch so 3 sekunden, allerdings folgendes problem: Es wird nicht mehr der richtige bildausschnitt kopiert, weil aus einen mir unbekannten grund x_max und y_max nicht mehr korrekt erkannt werden (achtet auf meine kommentierung im Source Code!)

Delphi-Quellcode:
var
  r,r2 : TRect;
  Bild,Bild2,bild3 : TBitmap32;
  x,y,x_min,y_min,x_max,y_max:integer;
begin
 x_min:=9999999;
 y_min:=9999999;
 x_max:=0;
 y_max:=0;

    Bild := TBitmap32.Create;
    Bild2 :=TBitmap32.Create;
        Bild3:=TBitmap32.Create;
    Bild.LoadFromFile('C:\windows\desktop\bild1.bmp');
    Bild2.LoadFromFile('C:\windows\desktop\bild2.bmp');

    for x:=0 to bild.width-1 do
    for y:=0 to bild.height-1 do
     begin
       if bild[x,y] <> bild2[x,y] then
       begin

       if x_min>x then x_min:=x;
       if x_max<x then x_max:=x;
       if y_min>y then y_min:=y;
       if y_max<y then y_max:=y;

       end;
     end;
    showmessage(inttostr(x_min)+' '+inttostr(y_min)+' '+inttostr(x_max)+' '+inttostr(y_max));

    r := Rect(0, 0, x_max, y_max);
    r2:= rect(x_min,y_min,x_max-x_min,y_max-y_min);

    bild3.Width:=x_max-x_min;
    bild3.height:=y_max-y_min;
    bild2.drawto(bild3,r2,r); //hier das verstehe ich gar nicht, denn:
//wenn ich r und r2 vertausche, werden x_max und y_max wieder richtig
//erkannt. kann mir das jemand erklären?!? Ist das n fehler in der g32
//lib?



    bild3.SaveToFile('C:\windows\desktop\bild3.bmp');
     showmessage('fertig');
  end;
Ich will ja nicht nerven, aber kann mir da jemand helfen?
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz