Brauche Hilfe bei Bild Darstellung
-
- Beiträge: 12
- Registriert: Do 30. Aug 2007, 15:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Mönchengladbach
Brauche Hilfe bei Bild Darstellung
Hallo
Ich bin neu in der Linux Welt und arbeite seit kurzem mit Lazarus und will ein Programm zur
Steuerung einer Video-Zoom-Kamera schreiben.
Für den Anfang möchte ich erstmal zwei Bilder in zwei Image Objekte laden, doch da geht´s
schon los, wenn ich das Bild rein laden gibt´s noch keine Probleme. Doch wenn ich dann
das Program ausführen (Compelieren) will bekomme ich folgende Fehlermeldung.
"Konnte Form nicht streamen:TForm Invalid horizontal pixel Index-1"
und die Image Objekte werden nicht angezeigt.
Kann mir da jemand helfen und mir sagen warum das nicht klappt, und wie ich den Fehler
behebe?
MfG
Ingo
Ich bin neu in der Linux Welt und arbeite seit kurzem mit Lazarus und will ein Programm zur
Steuerung einer Video-Zoom-Kamera schreiben.
Für den Anfang möchte ich erstmal zwei Bilder in zwei Image Objekte laden, doch da geht´s
schon los, wenn ich das Bild rein laden gibt´s noch keine Probleme. Doch wenn ich dann
das Program ausführen (Compelieren) will bekomme ich folgende Fehlermeldung.
"Konnte Form nicht streamen:TForm Invalid horizontal pixel Index-1"
und die Image Objekte werden nicht angezeigt.
Kann mir da jemand helfen und mir sagen warum das nicht klappt, und wie ich den Fehler
behebe?
MfG
Ingo
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Liegt evtl. an deiner FPC-Version.
http://www.freepascal.org/mantis/view.php?id=0007800" onclick="window.open(this.href);return false;
http://www.freepascal.org/mantis/view.php?id=9294" onclick="window.open(this.href);return false;
http://www.freepascal.org/mantis/view.php?id=0007800" onclick="window.open(this.href);return false;
http://www.freepascal.org/mantis/view.php?id=9294" onclick="window.open(this.href);return false;
-
- Beiträge: 12
- Registriert: Do 30. Aug 2007, 15:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Mönchengladbach
Hallo Zusammen
Danke erst mal für die vielen Antworten
Erstmal zu "creed steiger" ich verwende die fpc-src_2.0.4-1_i386.deb Datei die ich aus dem
Netz gezogen habe, gibts da noch was neueres ?
Zu Christian was meist du damit "aber lassen kannst die LCL auch so nur nicht in den .lrs streamen"?
Versteh absolut nich was mir das sagen soll, sorry.
Und wie lad ich dann die Bilder über opBitmap oder wärend der Laufzeit?
Kenn mich doch noch nicht aus.
Hab extra von Kylix auf Lazarus gewechselt weil es eigendlich besser sein sollte und nicht
abgekündigt ist aber unter Kylix war das Laden von Bildern kein Problem dafür
hatte ich andere.
MfG
Ingo
Danke erst mal für die vielen Antworten

Erstmal zu "creed steiger" ich verwende die fpc-src_2.0.4-1_i386.deb Datei die ich aus dem
Netz gezogen habe, gibts da noch was neueres ?
Zu Christian was meist du damit "aber lassen kannst die LCL auch so nur nicht in den .lrs streamen"?
Versteh absolut nich was mir das sagen soll, sorry.
Und wie lad ich dann die Bilder über opBitmap oder wärend der Laufzeit?
Kenn mich doch noch nicht aus.
Hab extra von Kylix auf Lazarus gewechselt weil es eigendlich besser sein sollte und nicht
abgekündigt ist aber unter Kylix war das Laden von Bildern kein Problem dafür
hatte ich andere.
MfG
Ingo
Es ist ein Unterschied, ob du ein Bild zur Laufzeit lädst, oder zur Entwurfszeit.Ingo hat geschrieben: Zu Christian was meist du damit "aber lassen kannst die LCL auch so nur nicht in den .lrs streamen"?
Versteh absolut nich was mir das sagen soll, sorry.
Im zweiten Fall wird das Bild nämlich im Formular gespeichert, was zu deinen Problemen führt.
Mit OpBitmap werden die Bilder zur Laufzeit geladen.Ingo hat geschrieben: Und wie lad ich dann die Bilder über opBitmap oder wärend der Laufzeit?
Kenn mich doch noch nicht aus.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
und das ganz einfach über:
wobei für Bitmap verschiedene möglichkeiten bestehen, kannst auch Graphic usw nehmen, je nach Bildtyp. Einfach mal ausprobieren.
Code: Alles auswählen
Image.Picture.Bitmap.LoadFromFile('Dateiname');
Johannes
-
- Beiträge: 12
- Registriert: Do 30. Aug 2007, 15:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Mönchengladbach
Hallo
Ja dann ist gut weil so wie ich es jetzt habe ist es so wie so nur zu test Zwecken. Später
sollen die Bilder direkt aus der Kamera geladen werden also zu Laufzeit.Dann wird es wohl
klappen.
Aber da hab ich noch ein anderes Problem.
Ich möchte mit zwei Bilder auf dem Bildschirm einen Farbvergleich machen.Und wenn ich
zwei TImage Objekte genau aufeinander Lege und strech= false ist kann ich das obere in
der Größe verändern, so das ich, wenn die zwei Bilder identisch sind, keinen Übergang
zwischen den beiden TImage Objecten erkenne. Dadurch ist es mir dann möglich an fast
jedem Punkt das obere mit dem unteren Bild zu vergleichen, was genau das ist was ich will.
Mein Problem ist jetz aber das ich das Bild auf dem gesamten Bildschirm darstellen muß,
und um das zu erreichen muß ich strech=true setzten (oder geht das auch anders). Wenn
ich dann aber das ober Bild mit dem unteren vergleichen, will sind sie nicht mehr
deckungsgleich weil ja durch strech immer das gesamte Bild im TImage Object angezeigt
wird.
Lösen wollte ich das Problem mit einem dritten TImage Object das verdeckt im Hintergrund
liegt und mit strecht das Bild auf dem ganzen Bildschirm anzeigt.Aus diesem wollte ich dann
genau die Größe des oberen TImage Objectes herraus kopieren und in dieses einsetzten so
das die zwei obersten TImage Objecte wieder deckungsgleich sein können.
Doch ich weiß nicht wie ich das realisieren kann?Denke es müßte irgendwie mit CopyRect
funktionieren aber ich weiß nicht wie, falls ich recht habe kann mir das bitte jemand sagen,
oder mir eine andere Möglichkeit nennen?
MfG
Ingo
Ja dann ist gut weil so wie ich es jetzt habe ist es so wie so nur zu test Zwecken. Später
sollen die Bilder direkt aus der Kamera geladen werden also zu Laufzeit.Dann wird es wohl
klappen.
Aber da hab ich noch ein anderes Problem.
Ich möchte mit zwei Bilder auf dem Bildschirm einen Farbvergleich machen.Und wenn ich
zwei TImage Objekte genau aufeinander Lege und strech= false ist kann ich das obere in
der Größe verändern, so das ich, wenn die zwei Bilder identisch sind, keinen Übergang
zwischen den beiden TImage Objecten erkenne. Dadurch ist es mir dann möglich an fast
jedem Punkt das obere mit dem unteren Bild zu vergleichen, was genau das ist was ich will.
Mein Problem ist jetz aber das ich das Bild auf dem gesamten Bildschirm darstellen muß,
und um das zu erreichen muß ich strech=true setzten (oder geht das auch anders). Wenn
ich dann aber das ober Bild mit dem unteren vergleichen, will sind sie nicht mehr
deckungsgleich weil ja durch strech immer das gesamte Bild im TImage Object angezeigt
wird.
Lösen wollte ich das Problem mit einem dritten TImage Object das verdeckt im Hintergrund
liegt und mit strecht das Bild auf dem ganzen Bildschirm anzeigt.Aus diesem wollte ich dann
genau die Größe des oberen TImage Objectes herraus kopieren und in dieses einsetzten so
das die zwei obersten TImage Objecte wieder deckungsgleich sein können.
Doch ich weiß nicht wie ich das realisieren kann?Denke es müßte irgendwie mit CopyRect
funktionieren aber ich weiß nicht wie, falls ich recht habe kann mir das bitte jemand sagen,
oder mir eine andere Möglichkeit nennen?
MfG
Ingo
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
http://freepascal.org/down2/i386/linux- ... al.org.var" onclick="window.open(this.href);return false;Ingo hat geschrieben: ich verwende die fpc-src_2.0.4-1_i386.deb Datei die ich aus dem
Netz gezogen habe, gibts da noch was neueres ?
-
- Beiträge: 12
- Registriert: Do 30. Aug 2007, 15:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Mönchengladbach
Hallo
Warum einfach, das untere TImage bleibt immer gleich groß und wird auf dem ganzen
Bildschirm dargestellt und das obere kann in seiner Größe verändert werden. Damit ich das
Orginalbild an jeder Stelle mit dem Masterbild vergleichen kann um eventuelle
Farbschwankungen erkennen zu können. So wird das bei unseren Bahnbeobachtungs
Systemen bis jetzt immer gemacht.
Wie "kompliziert" hättest du das den gemacht, um einen einfache obtischen Bildvergleich zu
realisieren um Farbunterschiede erkennen zu können?
Aber zurück zu meiner eigentlichen Frage, wie kann ich Teilbereiche eines TImage Objectes
kopieren und diese dann in ein anderes TImage Object einfügen?
MfG
Ingo
Warum einfach, das untere TImage bleibt immer gleich groß und wird auf dem ganzen
Bildschirm dargestellt und das obere kann in seiner Größe verändert werden. Damit ich das
Orginalbild an jeder Stelle mit dem Masterbild vergleichen kann um eventuelle
Farbschwankungen erkennen zu können. So wird das bei unseren Bahnbeobachtungs
Systemen bis jetzt immer gemacht.
Wie "kompliziert" hättest du das den gemacht, um einen einfache obtischen Bildvergleich zu
realisieren um Farbunterschiede erkennen zu können?
Aber zurück zu meiner eigentlichen Frage, wie kann ich Teilbereiche eines TImage Objectes
kopieren und diese dann in ein anderes TImage Object einfügen?
MfG
Ingo
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Es gibt den Befehl copyrect: image1.canvas.copyrect
http://lazarus-ccr.sourceforge.net/docs ... yrect.html" onclick="window.open(this.href);return false;
Damit müsste das mit dem Kopieren der Teilbereiche funktionieren.
Kommentar zum Bildvergleich:
Alternativ könntest du die Farbwerte der Pixel der beiden (gleich großen) Bilder voneinander abziehen. Dann addierst du die Beträge der Differenzen.
Je größer diese Summe ist, desto stärker unterscheiden sich die Bilder.
Viele Grüße, Euklid
http://lazarus-ccr.sourceforge.net/docs ... yrect.html" onclick="window.open(this.href);return false;
Damit müsste das mit dem Kopieren der Teilbereiche funktionieren.
Kommentar zum Bildvergleich:
Alternativ könntest du die Farbwerte der Pixel der beiden (gleich großen) Bilder voneinander abziehen. Dann addierst du die Beträge der Differenzen.
Je größer diese Summe ist, desto stärker unterscheiden sich die Bilder.
Viele Grüße, Euklid
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Ich hab dich doch richtig verstanden oder di willst 2 TImage auf deinem Formular übereinanderlegen ? Damit hast du natürlich keinen vergleich.Wie "kompliziert" hättest du das den gemacht, um einen einfache obtischen Bildvergleich zu
realisieren um Farbunterschiede erkennen zu können?
Genauso wenn du den Teilbereich eines anderen Bildes da hineinkopierst hast du keinen vergleich. Wie Euklid schon sagte musst du die Farbwerte von den übereinandeliegenden Pixeln subtrahieren und das was übrig bleibt ist deine Farbdifferenz.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/