AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildanalyse/-vergleich
Thema durchsuchen
Ansicht
Themen-Optionen

Bildanalyse/-vergleich

Ein Thema von Slashmob · begonnen am 8. Dez 2011 · letzter Beitrag vom 11. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 17:01
wenn Du
wert:= (farbe1 AND clRed) - (farbe2 AND clRed); verwendest bist Du diesbezüglich näher an den Vorgaben.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#2

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 17:12
wenn Du
wert:= (farbe1 AND clRed) - (farbe2 AND clRed); verwendest bist Du diesbezüglich näher an den Vorgaben.
Das heißt bei der Differenz hab ich dann automatisch die Rotmaske drinnen,richtig?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 17:30
Ja ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#4

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 17:45
Nun möchte ich den "wert" mit dem schwellwert vergleichen und ihn im stringgrid ausgeben, aber das klappt nicht. Dann kommt folgende Fehlermeldung:
Error: Incompatible type for arg no.3: Got "LongInt", expected "AnsiString"



Delphi-Quellcode:
For i:=1 to image1.width do // Erstes Bild pixelweise auslesen
         Begin
              For j:=1 to image1.height do
                  Begin
                       farbe1:= image1.canvas.pixels[i,j];
                    end;
           end;

      For i:=1 to image2.width do // Zweites Bild pixelweise auslesen
         Begin
              For j:=1 to image2.height do
                  Begin
                       farbe2:= image2.canvas.pixels[i,j];
                    end;
           end;

     wert:= (farbe1 and clred)-(farbe2 and clred); // Differenzwert bilden

     If wert > schwellwert then
        Begin
             stringgrid1.cells[1,1]:=inttostr(wert); // Edit
        end;
Und wie bekomm ich raus an welchen Stellen X und Y er die Unterschiede im Bild gefunden hat?

Geändert von Slashmob ( 9. Dez 2011 um 17:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#5

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 17:52
Wie wandelt man denn eine Ganzzahl in einen String um? Format oder IntToStr könnten da ganz hilfreich sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#6

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 17:58
Wie wandelt man denn eine Ganzzahl in einen String um? Format oder IntToStr könnten da ganz hilfreich sein.
Ach logisch, stimmt! (Bin noch Anfänger )
Jetzt ist der Fehler weg, aber es wird kein Wert angezeigt, stattdessen ändert sich die zeilenanzahl
Kriegt er denn mit dem obigen code einen Wert? Bin mir nicht ganz sicher...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#7

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 18:00
Irgendwie passen Deine Schleifen überhaupt nicht zusammen.

[edit] Da die Bilder ja gleich groß sind, müsste das auch so gehen:
Delphi-Quellcode:
For i:=1 to image1.width do
  Begin
    For j:=1 to image1.height do
      Begin
        farbe1 := image1.canvas.pixels[i,j];
        farbe2 := image2.canvas.pixels[i,j];
        wert:= (farbe1 and clred)-(farbe2 and clred);
      end;
  end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 9. Dez 2011 um 18:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 18:07
DeddyH war wieder mal schneller, da ich es schon habe poste ich es trotzdem mal ...


BTW.: wenn Du es es optimieren willst steig von Pixels auf Scanline um, Beiträge hierzu liefert die Forensuche bis zum Abwinken

Die bildest im Moment die Differenz nur für das letzte Pixel Deiner Schleifen, man könnte es so lösen
Delphi-Quellcode:
var
 i,j,z:Integer;
begin
 z := 0;
 For i:=0 to image1.width - 1 do // Erstes Bild pixelweise auslesen
         Begin
              For j:=0 to image1.height -1 do
                  Begin
                       farbe1:= image1.canvas.pixels[i,j];
                       farbe2:= image2.canvas.pixels[i,j];
                       wert:= (farbe1 and clred)-(farbe2 and clred); // Differenzwert bilden
                       inc(z);
                       AddFound(z , i, j, wert);
                    end;
           end;
Zahlen müssen in Strings umgewandelt werden wenn Du sie in einem Stringgrid darstellen willst

Delphi-Quellcode:
procedure TForm1.AddFound(nr, x, y, wert :Integer);
begin
  if StringGrid1.Rowcount < (nr + 1) then StringGrid1.Rowcount := (nr + 1);
  StringGrid1.Cells[0, nr ] := IntToStr(Nr);
  StringGrid1.Cells[1, nr ] := IntToStr(x);
  StringGrid1.Cells[2, nr ] := IntToStr(y);
  StringGrid1.Cells[3, nr ] := IntToStr(wert);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 9. Dez 2011 um 18:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#9

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 18:09
Was mir gerade erst auffällt: ist Pixels nicht 0-indiziert?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 18:11
Doch ..... ich habe die Schleife ungeprüft kopiert und angepasst ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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