AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mit Scanline einen bestimmten Bereich auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Scanline einen bestimmten Bereich auslesen

Ein Thema von Baal · begonnen am 23. Nov 2005 · letzter Beitrag vom 25. Nov 2005
Antwort Antwort
Baal

Registriert seit: 28. Aug 2003
53 Beiträge
 
Delphi XE2 Starter
 
#1

Mit Scanline einen bestimmten Bereich auslesen

  Alt 23. Nov 2005, 20:22
hi,

ich möchte mit Scanline einen bestimmten bereich eines bildes auslesen und auswerten

über die suche bin ich leider nich fündig geworden

diesen code habe ich aus der DP


Delphi-Quellcode:
procedure TForm1.Scan(h: HWND);
var
BitMap : TBitMap;
P: PRGBQuad;
y, x: integer;
begin
BitMap := TBitMap.create;
try
BitMap.LoadFromFile('maple.bmp');
BitMap.PixelFormat:= pf32Bit;

for y := 310 to 420 do
begin
P := BitMap.ScanLine[y];

for x := 348 to 372 do //360
begin
If ( P^.rgbRed = 173 ) And ( P^.rgbGreen = 33 ) And ( P^.rgbBlue = 0 ) Then
Begin
if x<=365 then sendkeys('left,Y',true);
if x>365 then sendkeys('right,Y',true);
End;

If ( P^.rgbRed = 0 ) And ( P^.rgbGreen = 85 ) And ( P^.rgbBlue = 173 ) Then
Begin
if x<=365 then sendkeys('left,Y',true);
if x>365 then sendkeys('right,Y',true);
End;
Inc(P);
end;
end;
finally
BitMap.Free;
end;
end;
wenn ich mit Scanline nun scanne dann liest er das ganze bild ein und beim auswerten
gibt er mir falsche werte, er erkennt nur farbwerte am anfang des bildes ich möchte aber welche aus der mitte

Danke für die hilfe
wo ein wille ist, ist auch ein Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 23. Nov 2005, 20:49
Habs jetzt nicht durchgeschaut, bringt BitMap.PixelFormat:= pf24Bit eine besserung?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 23. Nov 2005, 21:01
@turboPASCAL: Dann muss PRGBQuad aber auch durch PRGBTriple ersetzt werden. Es sollte aber beides funktionieren.

@Baal: Du hast zwar die Werte der for-Schleife angepasst, der Pointer zeigt aber immer noch auf das erste Pixel der Reihe.

Delphi-Quellcode:
for y := 310 to 420 do
begin
  P := BitMap.ScanLine[y];
  // P^ = Erstes Pixel der Reihe y

  Inc(P, 348); // 349. Pixel
  for x := 348 to 372 do
  begin
    If ( P^.rgbRed = 173 ) And ( P^.rgbGreen = 33 ) And ( P^.rgbBlue = 0 ) Then
    Begin
      if x<=365 then sendkeys('left,Y',true);
      if x>365 then sendkeys('right,Y',true);
    End;
    [...]

    Inc(P); // Nächstes Pixel
   end;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 23. Nov 2005, 21:37
Zitat von Khabarakh:
@turboPASCAL: Dann muss PRGBQuad aber auch durch PRGBTriple ersetzt werden. Es sollte aber beides funktionieren.
Jupp, hast recht.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Baal

Registriert seit: 28. Aug 2003
53 Beiträge
 
Delphi XE2 Starter
 
#5

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 23. Nov 2005, 22:57
danke für den tip

leider klappt es noch nicht
liest der jetz auch wirklich nur das viereck von (348;310) bis (372;420) aus
oder das ganze bild?
wo ein wille ist, ist auch ein Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 24. Nov 2005, 11:16
Zitat:
liest der jetz auch wirklich nur das viereck
Ja.

Was funktioniert denn nicht, die Steuerung ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Baal

Registriert seit: 28. Aug 2003
53 Beiträge
 
Delphi XE2 Starter
 
#7

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 24. Nov 2005, 20:52
entweder is das zu langsam oder eben es geht nicht?
wo ein wille ist, ist auch ein Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: Mit Scanline einen bestimmten Bereich auslesen

  Alt 25. Nov 2005, 00:53
Das wird wohl an der Sache mit dem sendkeys('left,Y',true); liegen.
Wenn du die Graphik scanst wird ja jeder Pixel in ein Key umgewandelt und gesendet...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz