Woot, kleiner Erfolg, also das mit den Pixel funktioniert jetzt
Delphi-Quellcode:
function TfrmMain.ScanPicture(
var bmpIN, bmpOUT: TBitmap): boolean;
var
y, x: integer;
LineIN, LineOUT: PRGBQuad;
Red, Green, Blue :
Array [0..1]
of Byte;
begin
Red[0] := $00;
Green[0] := $00;
Blue[0] := $F0;
Red[1] := $00;
Green[1] := $00;
Blue[1] := $FF;
for y := 0
to bmpIN.Height - 1
do
begin
LineIN := bmpIN.ScanLine[y];
LineOUT := bmpOUT.ScanLine[y];
for x := 0
to bmpIN.Width - 1
do
begin
if(
(LineIN^.rgbRed = $00)
AND
(LineIN^.rgbGreen = $00)
AND
(LineIN^.rgbBlue
in [Blue[0]..Blue[1]])
)
then
begin
if(DisplayMethod = dmPoints)
then
begin
LineOUT^.rgbRed := $00;
// = RGB (255, 0, 0) = clRed
LineOUT^.rgbGreen := $00;
LineOUT^.rgbBlue := $FF;
end;
if(DisplayMethod = dmLines)
then
begin
if( FirstRun )
then
begin
// bmpOUT.Canvas.MoveTo(x,y);
FirstRun := false;
end;
// bmpOUT.Canvas.LineTo(x,y);
bmpOUT.Canvas.Ellipse(x - 5, y - 5, x + 1 + 5, y + 1 + 5);
end;
end;
Inc(LineIN);
Inc(LineOUT);
end;
// x Achse
end;
// y Achse
end;
Aber das mit den Linien klappt immernoch nicht, meine Vermutung wäre, dass es da mit Canvas vielleicht Probleme gibt (?) Ob ich nun Linien zeichne, oder die Pixel etwas "vergrößere"
Delphi-Quellcode:
if(DisplayMethod = dmLines) then
begin
if( FirstRun ) then
begin
// bmpOUT.Canvas.MoveTo(x,y);
FirstRun := false;
end;
// bmpOUT.Canvas.LineTo(x,y);
bmpOUT.Canvas.Ellipse(x - 5, y - 5, x + 1 + 5, y + 1 + 5);
end;
Aber einer bestimmten Position werden die Punkte auf der linken Seite auch auf die Rechte Übertrage (siehe Lines1.jpg ganz oben)
Das erste Problem konnte ich wie folgt lösen:
Delphi-Quellcode:
BitmapIN.LoadFromFile('images/'+i2+'.bmp');
BitmapOUT.PixelFormat := BitmapIN.PixelFormat;
ScanPicture(BitmapIN, BitmapOUT);
BitmapOUT.SaveToFile('images/Analysiert'+i2+'.bmp');
grüße
Florian
EDIT:
Als Anhang einmal das bild mit Lines und Pixels(Such)...so sieht es richtig aus....darüber gelegt das Bild was ich erhalte, wenn ich das ganze mit Ellipse (siehe oben) mache...die Ellipsen sind alle ein stück nach links verschoben bzw. tauchen auf der falschen Seite auf... :/ Kann es denn an Canvas liegen? Denn jetzt wo ich die einzelnen Pixel ohne Canvas einfärbe da klappt es recht gut.
UND mit ist noch etwas aufgefallen...
der erste Punkt liegt in dem BMP bei den Koordinate (293|121)...selbst Nachgeschaut...das Programm liefter als Koordinaten aber
X> [219] Y>[121]...
Wenn ich den Pixel mit Scanlines einfärbe klappt alles, versuche ich dasselbe mit (Pixels :=) so endet es im Chaos...woher könnten die Falschen Koordinaten herrühren?