Wo gibt es den Fehler in der Code?



  • Hallo an allen erstmals,
    ich habe den folgenden Code der funktioniert ohne Fehler aber das Ergebnis ist ein scwarzes Bild,d.h etwas bei der SChleife läuft nicht richtig!!
    Hier ist dder Code:

    void  Dilation (struct Image *In,int MASK[][M],struct Image *Out)
    {
    	// M=5
    	int x,y,i,j,smax;
    	  if(!(Out->Data=(unsigned char*)calloc(Out->Rows,Out->Cols)))
    		{
    		 perror("malloc");
    		 exit(1);
    		 }
    
    for(y=M/2; y<In->Rows-M/2; y++)
    	for(x=M/2; x<In->Cols-M/2; x++)
    	{
    		smax=0;
    		for(j=-M/2; j<=M/2; j++)
    		{
    			for(i=-M/2; i<=M/2; i++)
    			{
    				if(MASK[i+M/2][j+M/2]==1)
    				{
    				if(*(In->Data+x+i+(long)(y+j)*In->Cols) >smax)
    					{
    					smax=*(In->Data+x+i+(long)(y+j)*In->Cols);
    					}
    				}
    			}
    		}
    
    		*(Out->Data+x+(long)y*In->Cols)=smax;
    
    		Out->Rows=In->Rows;
    		Out->Cols=In->Cols;
    		}
    }
    

    es gilt:

    struct Image
    {
    	 //# of Rows in Image  = dx
    	int Rows;
    	// # of columns in image =dy
    	int Cols;
    	// Pointer to image data
    	unsigned char *Data;
    	//type of image
    	unsigned char Type;
    };
    

    Also von main-Programm übergebe ich Eingangsbild (&In) ein Array int MASK[5][5]
    und das gäenderte Bild muss in Out gespeichert werden!Das Ergebnis dieser Algorithmus ist dass ich ein schwarzes Bild bekomme(sollte nicht).
    Kann mir jemand helfen!
    Ist es falsche Speicher reservierung oder was?
    Danke
    kilomat

    Edit by AJ: CPP-Tags (C/C++) eingefügt. Bitte das nächste mal selber drauf achten 😉



  • Hast du dir den Codeteil schon mal im Debugger angeschaut? Da findet man meistens den Grund, warum es nicht so funktioniert, wie es funktionieren soll. 😉


Anmelden zum Antworten