AW: Prozentrechnung
Aber wieso stürtzt dass dann immer noch ab :?:
ligt das vielleicht an dem color? |
AW: Prozentrechnung
Zitat:
|
AW: Prozentrechnung
Na gut aber warum stürzt das programm ab wenn mann es nicht über delphi startet
|
AW: Prozentrechnung
Kommt denn keine Fehlermeldung?
|
AW: Prozentrechnung
Nein, aber nach ein paar sekunden wird das formular weiß
|
AW: Prozentrechnung
Auch dann, wenn Du die Color-Variable anders nennst? Außerdem kann es gut sein, dass Dein Programm einfach etwas länger braucht, da der Zugriff über Canvas.Pixels schnarchlahm ist.
|
AW: Prozentrechnung
wenn man es von delphi aus compiliert dann bleibt dass bild aber vorhanden und die geschwindigkeit geht auch.
|
AW: Prozentrechnung
Das Programm läuft innerhalb der IDE schneller als außerhalb? Das interessiert mich jetzt aber, kannst Du mal die *.dpr, *.pas und *.dfm als Zip-Archiv anhängen?
|
AW: Prozentrechnung
Liste der Anhänge anzeigen (Anzahl: 1)
nicht ganz richtig, außerhalb von delphi läufts gar nicht.
habs in der zwischenzeit noch verbessert so das es jetzt alle farben außer schwarz erkennt. es geht außerdem nur mit bmp dateien. |
AW: Prozentrechnung
kann es sein dass Du mit Laufzeitpaketen kompiliert hast und die bpl's nicht gefunden werden?
Ich habe den Teil der Geschwindigkeit bringt mal kurz ausgetauscht:
Delphi-Quellcode:
type
pRGBTripleArray = ^TRGBTripleArray; TRGBTripleArray = ARRAY[0..$effffff] OF TRGBTriple; procedure TForm1.BitBtn1Click(Sender: TObject); var x,y:Integer; bmp:TBitMap; pLine: pRGBTripleArray; begin bmp := TBitmap.Create; bmp.Assign(Image1.Picture.Bitmap); bmp.PixelFormat := pf24Bit; try //Progress Bar ProgressBar1.Max := Image1.Picture.Bitmap.Width +1; //Progress Bar Ende Memo3.lines.Delete(0); ProgressBar1.position:=0; for Y := 0 to bmp.Height - 1 do begin ProgressBar1.Position := ProgressBar1.Position+1; pLine := bmp.ScanLine[Y]; for x := 0 to bmp.Width -1 do begin b := pLine[x].rgbtBlue; r := pLine[x].rgbtRed; g := pLine[x].rgbtGreen; z:=(0.299*r)+(0.587*g)+(0.114*b); u:=(b-z)*0.493; v:=(r-z)*0.877; if (z>0) and (z<121)then begin // y = 0 - 0.33 if (u>-112) and (u<16) and (v<157) and (v>33.64)then rot:=rot+1 else begin if (u<8) and (u>-64) and (v<33.64) and (v>11.21)then rot:=rot+1 else begin if (u<112) and (u>16) and (v<157) and (v>100.92)then lila:=lila+1 else begin if (u<112) and (u>32) and (v<100.92) and (v>33.64)then blau:=blau+1 else begin if (u<112) and (u>8) and (v<33.64) and (v>-157)then blau:=blau+1 else begin if (u<8) and (u>-8) and (v<11.21) and (v>-157)then gruen:=gruen+1 else begin if (u<-8) and (u>-112) and (v<0) and (v>-157)then gruen:=gruen+1 else begin if (u<64) and (u>-112) and (v<33.64) and (v>0)then gruen:=gruen+1 else begin if (u<-8) and (u>64) and (v<11.21) and (v>0)then gruen:=gruen+1 else begin if (u<8) and (u>-8) and (v<11.21) and (v>-11.21)then schwarz:=schwarz+1 end; end; end; end; end; end; end; end; end; end else begin if (z>120) and (z<160)then begin //y = 86 - 170 if (u<-16) and (u>-112) and (v<112.14) and (v>22.42)then orange:=orange+1 else begin if (u<16) and (u>-112) and (v<157) and (v>112.14)then orange:=orange+1 else begin if (u<112) and (u>-16) and (v<157) and (v>11.21)then lila:=lila+1 else begin if (u<122) and (u>8) and (v<11.21) and (v>-11.21)then blau:=blau+1 else begin if (u<112) and (u>0) and (v<-11.21) and (v>-157)then blau:=blau+1 else begin if (u<0) and (u>-112) and (v<-11.21) and (v>-157)then gruen:=gruen+1 else begin if (u<-8) and (u>-112) and (v<11.21) and (v>-11.21)then gruen:=gruen+1 else begin if (u<8) and (u>-8) and (v<11.21) and (v>-11.21)then grauweiss:=grauweiss+1; end; end; end; end; end; end; end; end else begin //y = 160 - 255 if z>159 then begin if (u<-32) and (u>-112) and (v<157) and (v>-44.85)then gelb:=gelb+1 else begin if (u<-24) and (u>-32) and (v<22.42) and (v>-44.85)then gelb:=gelb+1 else begin if (u<112) and (u>-32 ) and (v<157) and (v>22.42)then lila:=lila+1 else begin if (u<112) and (u>24 ) and (v<22.42) and (v>-11.21)then lila:=lila+1 else begin if (u<112) and (u>-24) and (v<-11.21) and (v>-157)then blau:=blau+1 else begin end; end; end; end; end; end; end; end; //ende Farbe verzweigungen end; end; Memo3.Lines.Add('Rot:' + inttostr(rot)); Memo3.Lines.add(FloatToStr(rot * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Violett:' + inttostr(lila)); Memo3.Lines.add(FloatToStr(lila * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Blau:' + inttostr(blau)); Memo3.Lines.add(FloatToStr(blau * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Grün:' + inttostr(gruen)); Memo3.Lines.add(FloatToStr(gruen * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Schwarz:' + inttostr(schwarz)); Memo3.Lines.add(FloatToStr(schwarz * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Orange:' + inttostr(orange)); Memo3.Lines.add(FloatToStr(orange * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Gelb:' + inttostr(gelb)); Memo3.Lines.add(FloatToStr(gelb * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); finally bmp.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 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