![]() |
Re: Algorithmus zum Kamerabilder entzerren?
Stimmt leider fehlt das. Könntest dus nochmal hochladen?
danke |
Re: Algorithmus zum Kamerabilder entzerren?
Oh, das tut mir Leid.
Hier die Funktion, viel Spaß damit :-D
Delphi-Quellcode:
type arrayoftpoint=array of tpoint;
Delphi-Quellcode:
Es besteht noch ein wenig optimierungsbedarf aber wenn ich das habe dann poste ich es hier.
function showarea(input:tbitmap; area:arrayoftpoint; nHeight,nWidth:integer):tbitmap;
//Showarea procedure by Thomas Feldmann //feldmann.thomas@googlemail.com //Im folgenden werden Methoden zum Rechnen mit Vektoren bereitgestellt type tvector=record x,y:double; end; function vector(vx,vy:double):tvector; begin result.x:=vx; result.y:=vy; end; function makevector(v:tpoint):tvector; begin result.x:=v.x; result.y:=v.y; end; function multiply(vektor:tvector; number:double):tvector; begin result:=vector(vektor.x*number,vektor.y*number); end; function add(v1,v2:tvector):tvector; begin result:=vector(v1.x+v2.x,v1.y+v2.y); end; function sub(v1,v2:tvector):tvector; begin result:=vector(v1.x-v2.x,v1.y-v2.y); end; var A,B,C,D,v,x :tvector; i,j :integer; bit :tbitmap; p1,p2 :^pcardinal; rows :array of pointer; begin //Quell- und Zielbitmap initialisieren input.PixelFormat :=pf32bit; bit :=tbitmap.Create; bit.Height :=nHeight; bit.Width :=nWidth; bit.PixelFormat :=pf32bit; //Bereichsprüfung if length(p)<4 then bit.Canvas.TextOut(10,10,'Bereich nicht genügend festgelegt') else begin //Pointer des Quellbitmaps cachen Setlength(Rows, input.Height); for i:=0 to input.Height-1 do rows[i]:=input.ScanLine[i]; //Vektoren initialisieren A:=makevector(p[0]); D:=makevector(p[3]); B:=makevector(p[1]); C:=makevector(p[2]); //Start des Durchlaufs for i:=0 to bit.height-1 do begin p1:=bit.ScanLine[i]; //Vertikalen Vektor berechnen und verschieben v:=sub(add(D,multiply(sub(C,D),i/bit.Height)),add(A,multiply(sub(B,A),i/bit.height))); for j:=0 to bit.width-1 do begin //Vektor zum gewünschten Pixel x:=add(add(A,multiply(sub(B,A),i/bit.width)),multiply(v,j/bit.Width)); //Pixel in das Zielbitmap übertragen p2:=rows[round(x.y)]; inc(p2,round(x.x)); p1^:=p2^; inc(p1); end; end; end; result:=bit; end; mfg, mr.winkle |
Re: Algorithmus zum Kamerabilder entzerren?
Danke!!!
Könntest du bitte noch das komplette Projekt hochladen, wär spitze :-D gruß, winx |
Re: Algorithmus zum Kamerabilder entzerren?
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, natürlich. Im Anhang das komplette Projekt mit Sourcecode. Die Funktion habe ich noch ein wenig überarbeitet und optimiert.
Viel Erfolg :cheers: mfg, mr.winkle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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