Brauche Hilfe bei Bild Darstellung

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Ingo
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

Beitrag von Ingo »

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

Christian
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:

Beitrag von Christian »

Bestimmte bildtypen lassen sich zur zeit nicht in Lazarus resourcen streamen. Verwende entweder einen anderen Bildtyp (glaub png ging). Oder lade sie zur Laufzeit.

ansonsten Wilkommen erstmal.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
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:

Beitrag von monta »

Willkommen.

Christian, ich glaub du irrst, png ging gerade nicht.

Du kannst es aber beispielsweise über opBitmap laden, hier im Forum zu finden und schöne Demos sind auch dabei.
Johannes

Christian
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:

Beitrag von Christian »

Kann sein, aber lasen kanns die LCL auch so nur nicht in den .lrs streamen...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

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;

Ingo
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

Beitrag von Ingo »

Hallo Zusammen

Danke erst mal für die vielen Antworten :D

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

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

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.
Es ist ein Unterschied, ob du ein Bild zur Laufzeit lädst, oder zur Entwurfszeit.
Im zweiten Fall wird das Bild nämlich im Formular gespeichert, was zu deinen Problemen führt.
Ingo hat geschrieben: Und wie lad ich dann die Bilder über opBitmap oder wärend der Laufzeit?
Kenn mich doch noch nicht aus.
Mit OpBitmap werden die Bilder zur Laufzeit geladen.

Christian
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:

Beitrag von Christian »

Lazarus kann es nur nicht in Formularen speichern, zur Laufzeit kannst du es problemlos laden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
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:

Beitrag von monta »

und das ganz einfach über:

Code: Alles auswählen

Image.Picture.Bitmap.LoadFromFile('Dateiname');
wobei für Bitmap verschiedene möglichkeiten bestehen, kannst auch Graphic usw nehmen, je nach Bildtyp. Einfach mal ausprobieren.
Johannes

Ingo
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

Beitrag von Ingo »

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

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

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 ?
http://freepascal.org/down2/i386/linux- ... al.org.var" onclick="window.open(this.href);return false;

Christian
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:

Beitrag von Christian »

Hä, du willst 2 Bilder vergleichen und legst sie deshalb mit 2 TImage übereinander ? Machst dus die hier nicht etwas einfach ? Das ist ja so als ob ich mir die Augen zuhalte und sage "Ich seh euch nicht also könnt ihr mich auch nicht sehen..."
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Ingo
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

Beitrag von Ingo »

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

Euklid
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:

Beitrag von Euklid »

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

Christian
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:

Beitrag von Christian »

Wie "kompliziert" hättest du das den gemacht, um einen einfache obtischen Bildvergleich zu
realisieren um Farbunterschiede erkennen zu können?
Ich hab dich doch richtig verstanden oder di willst 2 TImage auf deinem Formular übereinanderlegen ? Damit hast du natürlich keinen vergleich.
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/

Antworten