Ci joint un algo de détourage d'un bmp de qq lignes :
Le Binze c'est que des que la zone a détourée est trop importante je me tape un Stack overflow (le nb de fonction récursive empilé est trop important).
Cependant j'ai augmenté la taille de la pile à 1Go est à l'execution le programme plante (sur de grosses zones) alors que la mémoire utilisée est de 9-10 Mo.
Comprend pas.
void CPicture::Def4Connexes(unsigned long offset_pixel,const int & largeur,const int & hauteur)
{
BufferDetour[offset_pixel] = 1;
int y = offset_pixel/largeur;
int x = offset_pixel%largeur;
long off = offset_pixel;
//int nb_voisins = 0;
float seuil = 0.8;
for(int i=0;i<4;i++)
{
switch(i){
case 0:
off = offset_pixel + 1;//droit
break;
case 1:
off = offset_pixel + largeur;//bas
break;
case 2:
off = offset_pixel -1;//gauche
break;
case 3:
off = offset_pixel - largeur;//haut
break;
}
if( ((x-1)>=0) && ((x+1)<largeur) && ((y+1)<hauteur) && ((y-1)>=0) ){
if( (BufferDetour[off] == 0) && (SimilariteCouleur(bmpBuffer[off]) > seuil)){
// nb_voisins++;
Def4Connexes(off,largeur,hauteur);
}
}
}
//if(nb_voisins != 4) TabResul[indiceConn++] = offset_pixel; //mise anjour du tableau des contours
}
Zen
