begin process at 2012 05 29 07:26:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Multimédia

 > 

Greffon quadtree pour gimp en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Greffon quadtree pour gimp en C

lundi 12 février 2007 à 15:54:01 | Greffon quadtree pour gimp en C

ephilas

Bonjour,
je cherche à implémenter un plug-in pour gimp2.2 qui segmente une image grâce au quadtree.
Je m'inspire d'un code java que j'avais déjà fait et qui marchait mais la transposition en langage C me pose probleme.

Voilà ma structure en C dans "quadtree.h":

struct QuadtreeNode{
struct QuadtreeNode *_fils[4];
int _x,_y,_l,_h;
int _feuille;//1:le noeud est une feuille;  0:le noeud a 4 fils
};


 et voilà la méhode permettant d'instancier ce quadtree dans "quadtree.c" (elle est incomplete, elle me sert à tester le fonctionnement des structures) :

void quadtree_node(struct QuadtreeNode *quadtreeNode, int x, int y, int l, int h, int feuille){
quadtreeNode->_x = x;
quadtreeNode->_y = y;
quadtreeNode->_l = l;
quadtreeNode->_h = h;
quadtreeNode->_feuille = feuille;

if(!feuille){

///////////////////////////////////////////////////////////////////////////
// je suis obligé d'instancier le tableau de fils
// pour pouvoir m'en servir dans quadtree_node
// sinon j'ai une "erreur de segmentation"
///////////////////////////////////////////////////////////////////////////
    struct QuadtreeNode fils_1;
    struct QuadtreeNode fils_2;
    struct QuadtreeNode fils_3;
    struct QuadtreeNode fils_4;

    quadtreeNode->_fils[0] = &fils_1;
    quadtreeNode->_fils[1] = &fils_2;
    quadtreeNode->_fils[2] = &fils_3;
    quadtreeNode->_fils[3] = &fils_4;
/////////////////////////////////////////////////////////////////////////

    quadtree_node(quadtreeNode->_fils[0], 5, 5, 10, 10, 1);
    quadtree_node(quadtreeNode->_fils[1], 10, 5, 10, 10, 1);
    quadtree_node(quadtreeNode->_fils[2], 45, 5, 10, 10, 1);
    quadtree_node(quadtreeNode->_fils[3], 20, 30, 10, 10, 1);

    }
}


et enfin voilà le "main.c" :

struct QuadtreeNode *quadtreeNode;
quadtree_node(quadtreeNode, 10, 10, 50, 50, 0);
// Je vais donc créer un noeud "quadtreeNode"
// et ses 4 fils puisque ce denier n'est pas une feuille

Et voilà mon probleme : lorsque j'affiche les fils à partir de la méthode quadtree_node, le résultat est bon :

x:5 y:5 l:10 h:10 feuille:1
x:10 y:5 l:10 h:10 feuille:1
x:45 y:5 l:10 h:10 feuille:1
x:20 y:30 l:10 h:10 feuille:1

MAIS lorsque j'affiche les fils dans le "main.c", voilà ce que j'ai :

x:10 y:1081323328 l:1081294528 h:-1073744664 feuille:1080482768
x:1081294528 y:-1073744716 l:1080513717 h:1081294528 feuille:1085218816
x:1081294528 y:1085218816 l:1 h:10 feuille:1081323328
x:130719474 y:1081323328 l:1080516335 h:1 feuille:1085218816

Quel est le probleme ? Pourquoi certaines valeurs sont instanciées et d'autres pas ?

Merci d'avance !!!

mardi 13 février 2007 à 09:43:03 | Re : Greffon quadtree pour gimp en C

acx01b

Réponse acceptée !
salut

tu crées un pointeur
struct QuadtreeNode *quadtreeNode;
et après tu accèdes à quadtreeNode->_x dans la fonction quadtree_Node
mais tu n'as pas alloué de mémoire au pointeur quadtreeNode
ça mériterait un seg fault je suis étonné que tu n'en aies pas !

et aussi tu fais struct QuadtreeNode fils_1;
toujours dans la fonction quadtree_Node :
c'est une variable temporaire, sa mémoire est libérée à la fin de la fonction
il lui allouer de la mémoire avec malloc:

quadtreeNode->_fils[0] = malloc(sizoef *quadtreeNode->_fils[0]);

a+
mercredi 14 février 2007 à 09:47:10 | Re : Greffon quadtree pour gimp en C

ephilas

Merci acx01b !
Je ne suis pas tres familier avec les pointeurs et les allocations de memoire.

allez j'y retourne !


Cette discussion est classée dans : feuille, fils, struct, quadtree, quadtreenode


Répondre à ce message

Sujets en rapport avec ce message

Probleme de feuille de propriété [ par Lallthis ] Je n'arrive pas à utiliser les onglets.QQ'un à t'il qq chose à me proposer??Merci tres URGENT.BYe Méga colle du siècle les amis [ par Dj-ZhAbS ] Wais, bon j'ai un problème ici, dont je n'ai pas la réponse...Dans mon appli, je fais générer des Feuille(child de mdi) et je les nomme à partir d'une Ouvrir une feuille [ par youpiiie ] Salut pouvez vous me dire comment ouvrir une feuille en c++ parce que je suis un débutant@+ Tableau de type feuille Excel [ par pde ] Comment créer en C++ un tableau de type feuille Excel, comportant des lignes et des colonnes, dans un contrôle ou une vue ? Probleme de reception dans un serveur visual C++ pour windows [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi.voici les source du client et du serveurLe Serveur fichier.h [ par bidules ] Bonjour,j'aimerais savoir s'il est possible de mettre des structures dans un fichier d'entete.Car j'ai fais l'essai mais lors de la compilation pour c Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ] Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse prog parent / fils [ par aviona ] Bonjour,Je cherche à réaliser un prog qui permet le lancement d'un autre prog (jusqu'à la je sais faire) mais qui garde la main dessus.ex : - lancer n Module Unit sous builder 6 [ par belkin ] Bonjour,J'utilise Builder 6 et je debute sous c++. Avant j'etais sous delphi 6.Ma question tres simple :Comment faire pour pouvoir acceder a une proce struct constante [ par zarkin ] Bonjour,Je suis ss Dev-C++.Peut-on définir une structure constante en l'initialisant à partir d'une autre structure constante ?ex:const type1 MaConsta


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales