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
Hallo
Ja genau ich will es mit dem Auge vergleichen, da ich das Masterbild, mit dem von unserer
Hochgeschwindigkeits Kamera aufgenommenem Bild vergleichen will.
z.B. bei einer Druckmaschine haben wir ein Masterbild gespeichert auf dem alle Farben
richtig sind und mit diesem Masterbild will ich dann wärend die Druckmaschine läuft den
aktuellen Druck kontrollieren, der von unserer Hochgeschwindigkeits Kamera aufgenommen
wird. Wenn alles richtig ist erkennt man keinen Übergang zwischen Masterbild und
aufgenommenem Bild. Da ja das Masterbild auf dem Aufgenommenem Bild liegt und in der
Größe verändert werden kann, z.B so das im Master Timage nur das halbe (1/4;1/3usw.)
Bild angezeigt wird, ist es mir dann möglich das Aufgenommene Bild an jeder Stelle mit
dem Masterbild zu vergleichen und Farbunterschiede direkt zu erkennen.
Mit dem Befehl copyrect hab ich ja schon vermutet aber wie ich den Befehl genau einsetzt
weiß ich nicht
. Klar mit image1.canvas.copyrect einen Teil des Bildes rauskopieren,
aber wie geb ich an welchen teil und dann das Kopierte z.B in Image2 einfügen aber wie?
Hab´s schon mal versucht das Bild von Image1 in das Cliboard zu laden und es dann
aus dem Clipboard in das Image2 zu laden aber es ist halt immer komplett kopiert worden
und nicht nur ein Teil des Bildes.
MfG
Ingo
Ja genau ich will es mit dem Auge vergleichen, da ich das Masterbild, mit dem von unserer
Hochgeschwindigkeits Kamera aufgenommenem Bild vergleichen will.
z.B. bei einer Druckmaschine haben wir ein Masterbild gespeichert auf dem alle Farben
richtig sind und mit diesem Masterbild will ich dann wärend die Druckmaschine läuft den
aktuellen Druck kontrollieren, der von unserer Hochgeschwindigkeits Kamera aufgenommen
wird. Wenn alles richtig ist erkennt man keinen Übergang zwischen Masterbild und
aufgenommenem Bild. Da ja das Masterbild auf dem Aufgenommenem Bild liegt und in der
Größe verändert werden kann, z.B so das im Master Timage nur das halbe (1/4;1/3usw.)
Bild angezeigt wird, ist es mir dann möglich das Aufgenommene Bild an jeder Stelle mit
dem Masterbild zu vergleichen und Farbunterschiede direkt zu erkennen.
Mit dem Befehl copyrect hab ich ja schon vermutet aber wie ich den Befehl genau einsetzt
weiß ich nicht

aber wie geb ich an welchen teil und dann das Kopierte z.B in Image2 einfügen aber wie?
Hab´s schon mal versucht das Bild von Image1 in das Cliboard zu laden und es dann
aus dem Clipboard in das Image2 zu laden aber es ist halt immer komplett kopiert worden
und nicht nur ein Teil des Bildes.
MfG
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
Hallo
Sorry aber da fehlt mir was.
Wenn ich
image1.Picture.Bitmap.Canvas.CopyRect(rect2,image2.Picture.Bitmap.Canvas,rect);
eingebe meckert er das er rect2 und rect nicht kennt. Ist ja auch klar hab ich nirgends
definiert, hier ist ein wenig Quelltext von meinem Program aber wie (wo) setzt ich jetzt den
CopyRect Befehl?
Ich hatte mir gedacht das ich den Kopiervorgang mit der Bestätigung des
SplitscreenButtons starte und es auch direkt wieder einfüge. Aber irgend wie(wo) muß ich ja
rect2 definieren, das zu kopierende Rechteck aus SplitImage soll die Größe von
SplitImage1 haben und soll dann auch in SplitIimage1 eingefügt werden.
Vielleicht kannst du mir die Implementierung von CopyRect ein bißchen genauer
beschreiben (für dumme wie mich, sorry) am besten an einem kleinen Beispiel.
MfG
Ingo
Sorry aber da fehlt mir was.
Wenn ich
image1.Picture.Bitmap.Canvas.CopyRect(rect2,image2.Picture.Bitmap.Canvas,rect);
eingebe meckert er das er rect2 und rect nicht kennt. Ist ja auch klar hab ich nirgends
definiert, hier ist ein wenig Quelltext von meinem Program aber wie (wo) setzt ich jetzt den
CopyRect Befehl?
Code: Alles auswählen
unit Video5000Unit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
StdCtrls, ExtCtrls;
type
{ TVideo5000Form }
TVideo5000Form = class(TForm)
MasterImage: TImage;
SplitImage: TImage;
SplitImage1: TImage;
LeftButton: TSpeedButton;
StatusLabel: TLabel;
ZoomButton1: TSpeedButton;
ZoomButton2: TSpeedButton;
IrisButton1: TSpeedButton;
IrisButton2: TSpeedButton;
FocusButton1: TSpeedButton;
FocusButton2: TSpeedButton;
UpButton: TSpeedButton;
DownButton: TSpeedButton;
RightButton: TSpeedButton;
TotalzoomButton: TSpeedButton;
WeitwinkelButton: TSpeedButton;
ScanYButton: TSpeedButton;
ScanXButton: TSpeedButton;
HoldButton: TSpeedButton;
SplitscreenButton: TSpeedButton;
WartungsButton: TSpeedButton;
ZahnradButton: TSpeedButton;
StepsButton: TSpeedButton;
procedure ZoomButton1Click(Sender: TObject);
procedure SplitscreenButtonClick(Sender: TObject);
procedure WartungsButtonClick(Sender: TObject);
procedure StepsButtonClick(Sender: TObject);
procedure ZoomButton2Click(Sender: TObject);
procedure IrisButton1Click(Sender: TObject);
procedure IrisButton2Click(Sender: TObject);
procedure FocusButton1Click(Sender: TObject);
procedure FocusButton2Click(Sender: TObject);
procedure WeitwinkelButtonClick(Sender: TObject);
procedure TotalzoomButtonClick(Sender: TObject);
procedure UpButtonClick(Sender: TObject);
procedure DownButtonClick(Sender: TObject);
procedure LeftButtonClick(Sender: TObject);
procedure RightButtonClick(Sender: TObject);
procedure ZahnradButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure HoldButtonClick(Sender: TObject);
procedure ScanXButtonClick(Sender: TObject);
procedure ScanYButtonClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ private declarations }
public
{ public declarations }
end;
var
Video5000Form: TVideo5000Form;
implementation
{ TVideo5000Form }
var p,h,t,m,s,z,i,f,b,e,bereich:Byte;
estr,zstr,istr,fstr,bstr:String;
procedure TVideo5000Form.SplitscreenButtonClick(Sender: TObject);
begin
p:=p+1;
if (StepsButton.Visible) then StepsButtonClick(Sender);
if (ZahnradButton.Visible) then ZahnradButtonClick(Sender);
if p=2 then
begin
// SplitImage.Picture.Bitmap.Canvas.CopyRect(rect2,SplitImage1.Picture.Bitmap.Canvas,rect);
StatusLabel.Caption:='Splitscreen Funktion';
SplitscreenButton.Visible:=true;
SplitImage1.Show;
p:=0;
end
else
begin
StatusLabel.Caption:='';
SplitscreenButton.Visible:=false;
SplitImage1.Hide;
end;
end;
SplitscreenButtons starte und es auch direkt wieder einfüge. Aber irgend wie(wo) muß ich ja
rect2 definieren, das zu kopierende Rechteck aus SplitImage soll die Größe von
SplitImage1 haben und soll dann auch in SplitIimage1 eingefügt werden.
Vielleicht kannst du mir die Implementierung von CopyRect ein bißchen genauer
beschreiben (für dumme wie mich, sorry) am besten an einem kleinen Beispiel.
MfG
Ingo
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
In deinem Fall sind das:
MasterImage
SplitImage
oder
SplitImage1
dann geht man etwa wie folgt vor:
MasterImage
SplitImage
oder
SplitImage1
dann geht man etwa wie folgt vor:
Code: Alles auswählen
procedure CopyImageRect(SrcImg,TargetImg: TImage);
var
rect1,
rect2: TRect;
begin
// hier den Ausschnitt festlegen
rect2.Top:= irgendein_integer;
...
// und dann kommt der Punkt, wo der Floh das Wasser lässt
rect1:= rect2;
SrcImg.Picture.Bitmap.Canvas.CopyRect(rect2,TargetImg.Picture.Bitmap.Canvas,rect1);
end;
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
"per Auge" wäre besser.theo hat geschrieben:Ingo spricht von "optischem" Vergleich.
Ich glaube er will es "von Auge" vergleichen.

Aber warum er nicht einfach Bild:= Bild1 - Bild2 macht, also Pixelweise die Farbwerte subtrahiert versteh ich auch nicht. Dann hat er gleich die tatsächliche Veränderung, so denn eine da ist.

Ansonsten wird es "zappenduster".

Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
Also du "Tüpflischisser"schnullerbacke hat geschrieben: "per Auge" wäre besser.![]()

Erstens steht der Ausruck in Anführungszeichen. Soll also eine Redewendung ausdrücken.
Zweitens werden ein paar Helvetismen doch wohl erlaubt sein.
http://de.wikipedia.org/wiki/Helvetismus" 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
Also das mit dem CopyRect werd ich jetzt erst mal ausprobieren und mich dann noch mal
melden ,aber erst mal Danke.
Zu Christian sicher bin ich mir nicht, aber wir haben extra einen Treiber entwickeln lassen
und ich denke, der wird mir die Bilder in irgend einem Dateiformat anbieten und die werd
ich dann einbinden. So stell ich mir das zu mindest vor der Treiber sollte diese Woche bei
mir ankommen mal sehn, aber welches Tuturial meinst du?
MfG
Ingo
Also das mit dem CopyRect werd ich jetzt erst mal ausprobieren und mich dann noch mal
melden ,aber erst mal Danke.
Zu Christian sicher bin ich mir nicht, aber wir haben extra einen Treiber entwickeln lassen
und ich denke, der wird mir die Bilder in irgend einem Dateiformat anbieten und die werd
ich dann einbinden. So stell ich mir das zu mindest vor der Treiber sollte diese Woche bei
mir ankommen mal sehn, aber welches Tuturial meinst du?
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:
Und was heißt das? Sowas wie "Krümelkacker" bei uns?theo hat geschrieben: Also du "Tüpflischisser"
@ Ingo:
rect und rect2 im Beispielcode von Theo musst du zunächst noch definieren. Denn hier müssen die Koordinaten des rechteckigen Bildausschnittes angegeben werden, von dem aus (bzw. in den) kopiert werden soll.
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56