001
19.12.2003, 12:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
du kannst das bitmap direkt öffnen im header steht irgendwo wie hoch und breit das teil ist und ab wo die daten beginnen. was duzu noch wissen musst ist wie die daten zu interpretieren sind. also ob das ein sw- oder farb bitmap ist und wie kodiert wurde (also mit 24 bit, 8 bit, 1bit usw...) Guck mal in die Rätselecke da hab ich mal ein Rätsel mit nem Bitmap gestellt. Wenn ich mich nicht irre müssten an der Stelle wo ich das Bitmap einlese kommentare stehen was genau ich da am Header einlese. Dann kennst du auch die positionen für höhe, breite und datenanfang...
Kanten findest du dann in etwa so
C++: |
#define Pixelhoehe 1024 //oder wie gross auch immer dein bild auch ist... #define Pixelbreite 1024
int getEdge(unsigned char* picture, int fixerAchswert,int schwelle,int vertOderHor, int vorwOderRueck, int pixelabstand, int startwert, int zielwert){ int help,i=0;
if(fixerAchswert<0 || (vertOderHor==1 && fixerAchswert>Pixelhoehe-1-pixelabstand) || (vertOderHor==0 && fixerAchswert>Pixelbreite-1-pixelabstand) || startwert<0 || (vertOderHor==1 && zielwert>Pixelbreite-1-pixelabstand) || (vertOderHor==0 && zielwert>Pixelhoehe-1-pixelabstand))return-1;
if(vorwOderRueck)help=1; else help=-1;
if(vertOderHor){ //vertikale Kante suchen
if(vorwOderRueck) i=startwert; else i=zielwert;
while((i>=startwert) && (i<=zielwert)){ if( abs(picture[(i+pixelabstand) + Pixelbreite*fixerAchswert] - picture[i + Pixelbreite*fixerAchswert] )>schwelle){ if(vorwOderRueck) return i+1+pixelabstand/2; else return i-pixelabstand/2; } if(vorwOderRueck) i++; else i--; }
}else{ //horizontale Kante suchen
if(vorwOderRueck) i=startwert; else i=zielwert;
while((i>=startwert) && (i<=zielwert)){ if(abs(picture[fixerAchswert + Pixelbreite*(i+pixelabstand)] - picture[fixerAchswert + Pixelbreite*i] )>schwelle){ if(vorwOderRueck) return i+1+pixelabstand/2; else return i-pixelabstand/2; } if(vorwOderRueck) i++; else i--; }
}
return -1; }
|
-- ...fleißig wie zwei Weißbrote Dieser Post wurde am 19.12.2003 um 12:53 Uhr von Windalf editiert. |