Autor Beitrag
Claudius
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 06.12.02 17:59 
Hi,

ich habe ein Problem. Und zwar muss ich eine Bitmap einlesen und dann schwarze Pixel rausfiltern und diese in einArray schreiben. Im Grunde läuft das ganze auf BarCode einlesen raus. Kann mir da jemand gut weiter helfen? Es wäre dringend. Wäre echt sehr nett.

Schöne Grüße an alle :(
D0P3 F!$H
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.12.02 18:03 
Hei!
Kenn mich damit zwar nicht aus, aber das hier ist doch so ähnlich, oder?

Vielleicht hilft es dir ja weiter.
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Fr 06.12.02 18:21 
diesen quellcode oder besser den wichtigen teil habe ich von aya (DANKE noch mal) dieses progi. liest farbwerte aus model es um und dein prob. ist gelöst.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  jpeg: TJPEGImage;
  bit: TBitmap;
  Color: TColor;
  lauf1: integer; 
begin 
  jpeg:=TJPEGImage.Create;
  jpeg.LoadFromFile('f:\12jpg.jpg');
  image1.Picture.LoadFromFile('f:\12jpg.jpg');
  bit:=TBitmap.Create;
  bit.Assign(jpeg);
  listbox1.Clear;
  for lauf1:=0 to 200 do
   begin
    Color:=bit.Canvas.Pixels[lauf1,2];
    listbox1.items.Add(inttostr(color));
   end;
  jpeg.Free;
    bit.Free;

end;

end.
Claudius Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 10.12.02 14:41 
Titel: Danke für den Code...
aber leider passiert beim ausführen des Programms nichts.
BEi der Syntaxprüfung treten keine Fehler auf, wenn ich aber den Button anklicke, geschieht nichts. Mach ich vielleicht irgendwas falsch?
Wäre nett, wenn ich eine Antwort bekommen würde.

mfg
Claudius :?
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Di 10.12.02 15:24 
Titel: @claudius
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,  Forms,
   Dialogs, StdCtrls, ExtCtrls, jpeg;

type
   TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  jpeg: TJPEGImage;
  bit: TBitmap;
  Color: TColor;
  lauf1: integer; 
begin 
  jpeg:=TJPEGImage.Create;
  jpeg.LoadFromFile('f:\12jpg.jpg');
  image1.Picture.LoadFromFile('f:\12jpg.jpg');
  bit:=TBitmap.Create;
  bit.Assign(jpeg);
  listbox1.Clear;
  for lauf1:=0 to 200 do
   begin
    Color:=bit.Canvas.Pixels[lauf1,2];
    listbox1.items.Add(inttostr(color));
   end;
  jpeg.Free;
    bit.Free;

end;

end.



jpeg.LoadFromFile('f:\12jpg.jpg'); <<<<<< Hier muss Du Dein Pfad und Dateiname eintragen
image1.Picture.LoadFromFile('f:\12jpg.jpg'); <<<<<< Hier muss Du Dein Pfad und Dateiname eintragen



und du darfst nicht einfach die komponenten in dein for packen und das programm rein kopieren das geht nicht

du musst es schon von hand machen. du musst schon ein doppel click auf den button machen und dan denn inhalt von TForm1.Button1Click(Sender: TObject); in das erzeugte ereigniss reinkopieren.
Claudius Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 10.12.02 15:27 
Titel: Ist in Ordnung
Danke für die Hilfe, aber das war schon klar, das mein Pfad eingetragen werden muss. Das Problem hab ich aber jetzt beseitigt. Es wäre aber schön, wenn du mir zu folgendem helfen könntest: Dein Programm funktioniert und gibt irgendwelche Zahlenkombinationen aus. Mein Programm muss aber BarCode lesen können, d.h. ich muss Zeile für Zeile durchgehen und schwarze Pixel suchen. Sobald ich einen gefunden hab, sollte dieser in ein Array geschrieben werden.

mfg
Claudius
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Di 10.12.02 15:40 
Titel: @Claudius
ich geh mal davon aus das jedes barcode jpg gleich gross ist (x,y) weil ich weiss auch noch nicht wie ich die grösse eines jpg´s ermittle.

gehen wir mal davon aus es ist x=200 und y=100
erstell dir ein bild (black.jpg) in photoshop oder so. mit weissem background und z.b. einem schwarzem strich (wie beim barcode) dann starte mein progi und du erhälst in der listbox alle x und y koordinaten wo sich ein schwarzer pixel befindet.



ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  jpeg: TJPEGImage;
  bit: TBitmap;
  Color: TColor;
  lauf1: integer;
  x,y  : integer;

begin
  jpeg:=TJPEGImage.Create;
  jpeg.LoadFromFile('f:\black.jpg');
  image1.Picture.LoadFromFile('f:\black.jpg');
  bit:=TBitmap.Create;
  bit.Assign(jpeg);
  listbox1.Clear;


  for x:=0 to 200 do
   begin
    for y:=0 to 100 do
     begin
      Color:=bit.Canvas.Pixels[x,y];
      if color=0 then
       begin
        listbox1.items.Add(inttostr(x)+' '+inttostr(y));
       end;
     end;
   end;

  jpeg.Free;
    bit.Free;

end;

end.
Claudius Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 10.12.02 16:09 
Titel: Danke...
funktioniert einwandfrei. Nun muss ich bloß noch eine Funktion schreiben, die .jpg in .bmp umwandelt