AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

External: SIGEGV bei Rect()

Ein Thema von F1r3man · begonnen am 6. Dez 2016 · letzter Beitrag vom 7. Dez 2016
 
F1r3man

Registriert seit: 8. Nov 2016
8 Beiträge
 
#7

AW: External: SIGEGV bei Rect()

  Alt 6. Dez 2016, 22:43
Klappt. ist jetzt nur noch ein Pfad Fehler. den kriege ich geklärt. und hier die Funktion. Ich schreibe grad als ein Schulprojekt eine Kennzeichenerkennung für eine Tankstelle wenn du lust hast dich da reinzulesen, hier die Funktion, die du wolltest. Ich habe das format auf TBitmap gesetzt, weil das das Format von img ist.... n bissle dumme bezeichnung ich weiß xD bin nur zu faul das zu ändern, aber wie gesagt funktioniert jetzt alles.
Ty.
Lg Simon


Delphi-Quellcode:
function TKennzeichenFinden.findeKanten(img: TBitmap; filterRad: integer; tolleranzschwelle: integer; saveOn: TBitmap): TBitmap;
var
  farbe: TColor;
  mittelwert: array of integer;
  x, y, i, j, g, buffx, buffy: integer;
  durchschnitt: integer;
  felder: array of array of integer;
begin
  durchschnitt:= (filterRad*2)-1;
  setLength(mittelwert, 4);
  setLength(felder, durchschnitt);
  for i:= 0 to Length(felder)-1 do
  begin
    setLength(felder[i], durchschnitt);
  end;
  //echte Korrdinaten
  for x:=filterRad to img.Width-filterRad-1 do
  begin
    for y:=filterRad to img.Height-filterRad-1 do
    begin
      //durchgehen des Filterbereiches
      for i:= 0 to durchschnitt-1 do
      begin
        for j:= 0 to durchschnitt-1 do
        begin
          //aktuelle Filterposition (start oben links)
          buffx:= x-filterRad+i;
          buffy:= y-filterRad+j;
          farbe:= img.Canvas.Pixels[buffx, buffy];
          felder[buffx][buffy]:=round((Red(farbe)+Green(farbe)+Blue(farbe))/3);
        end;
      end;
      //berechnen des Durschschnitts Pro Sektor
      for i:= 0 to Length(felder)-1 do
      begin
        for j:= 0 to Length(felder[i])-1 do
        begin
          if(i<=filterRad) then
          begin
            //sektor 1
            if(j<=filterRad) then
            begin
              mittelwert[0]:= mittelwert[0]+felder[i][j];
            end;
            //sektor 2
            if(j>=filterRad) then
            begin
              mittelwert[1]:= mittelwert[1]+felder[i][j];
            end;
          end;
          if(i>=filterRad) then
          begin
            //sektor 3
            if(j<=filterRad) then
            begin
              mittelwert[2]:= mittelwert[2]+felder[i][j];
            end;
            //sektor 4
            if(j>=filterRad) then
            begin
              mittelwert[3]:= mittelwert[3]+felder[i][j];
            end;
          end;
        end;
      end;
      //durschschnitte final berechnen
      for g:= 0 to Length(mittelwert)-1 do
      begin
        mittelwert[g]:= Round(mittelwert[g]/(filterRad*filterRad));
      end;
      //Bitmaps setzen
      if (mittelwert[0]<tolleranzschwelle) AND (mittelwert[1]<tolleranzschwelle) AND (mittelwert[2]>=tolleranzschwelle) AND (mittelwert[3]>=tolleranzschwelle) then
      begin
        saveOn.Canvas.Pixels[x, y]:=TopBorder;
      end;
      if (mittelwert[0]<tolleranzschwelle) AND (mittelwert[1]>=tolleranzschwelle) AND (mittelwert[2]<tolleranzschwelle) AND (mittelwert[3]>=tolleranzschwelle) then
      begin
        saveOn.Canvas.Pixels[x, y]:=LeftBorder;
      end;
      if (mittelwert[0]>=tolleranzschwelle) AND (mittelwert[1]>=tolleranzschwelle) AND (mittelwert[2]<tolleranzschwelle) AND (mittelwert[3]<tolleranzschwelle) then
      begin
        saveOn.Canvas.Pixels[x, y]:=BottomBorder;
      end;
      if (mittelwert[0]>=tolleranzschwelle) AND (mittelwert[1]<tolleranzschwelle) AND (mittelwert[2]>=tolleranzschwelle) AND (mittelwert[3]<tolleranzschwelle) then
      begin
        saveOn.Canvas.Pixels[x, y]:=Rightborder;
      end
      else
      begin
        saveOn.Canvas.Pixels[x, y]:=RGBToColor(0, 0, 0);
      end;
    end;
  end;
  result:= saveOn;
end;
kann vielleicht noch verbessert werden, aber ist OK, das ist ja der Spaß an dem Projekt. xD
  Mit Zitat antworten Zitat
 

 

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:33 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