Brauche Hilfe bei Bild Darstellung

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Ingo spricht von "optischem" Vergleich.
Ich glaube er will es "von Auge" vergleichen.

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 soll das aber gehn wenn er 2 Bilder übereinander legt ?
Dann sieht man ja das hintere nicht mehr
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

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 :oops: . 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

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

Beitrag von theo »

Also Clipboard brauchst du bestimmt nicht dazu.

image1.Picture.Bitmap.Canvas.CopyRect(rect2,image2.Picture.Bitmap.Canvas,rect);

Auschnitt von Bild 2 (rect2) in rect1 des Bildes 1 kopieren.
Was verstehst du daran nicht?

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

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;
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

schnullerbacke
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

Beitrag von schnullerbacke »

In deinem Fall sind das:

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)

schnullerbacke
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

Beitrag von schnullerbacke »

theo hat geschrieben:Ingo spricht von "optischem" Vergleich.
Ich glaube er will es "von Auge" vergleichen.
"per Auge" wäre besser. :lol:

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. :wink:

Ansonsten wird es "zappenduster". :lol:
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

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 »

Ingo, hast du überhaupt schon einen blassen schimmer wie du das Bild von der Kamera bekommst ? Ansonsten würd ich an dieser stelle abbrechen und erstmal ein Tuturial durcharbeiten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von theo »

schnullerbacke hat geschrieben: "per Auge" wäre besser. :lol:
Also du "Tüpflischisser" ;-)
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;

;-)

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

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

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 »

Irgendein Pascal Tuturial.
Und Treiber stellen im Normalfall keine Bilder zur Verfügung.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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 »

theo hat geschrieben: Also du "Tüpflischisser" ;-)
Und was heißt das? Sowas wie "Krümelkacker" bei uns?

@ 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.

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

Beitrag von theo »

Euklid hat geschrieben: Und was heißt das? Sowas wie "Krümelkacker" bei uns?
Glaub schon ;-)

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

Beitrag von creed steiger »

oder so

http://de.wikipedia.org/wiki/Korinthenkacker" onclick="window.open(this.href);return false;

;)

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

Beitrag von theo »

Was war eigentlich vor Wikipedia? Gab es da schon Farben und das Meer?
Muss ich mal nachschauen..... ;-)

Antworten