Bonjour,

Je souhaite "délocaliser" une partie de mon travail dans une fonction.
Cependant je suppose que je me heurte à un problème d'adresse ...

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
int main(void) {
        ........
 
        IplImage *source_hsv;
        IplImage *source_rgb;
 
        source_hsv = cvCloneImage(source);
        source_rgb = cvCreateImage(cvGetSize(source), source->depth, 1);
        result = cvCreateImage(cvGetSize(source_rgb), source_rgb->depth, 1);
 
        cvConvertImage(source, source_rgb, 0);
        cvCvtColor(source, source_hsv, CV_BGR2HSV);
 
        cvCanny(source_rgb, result, 20.0, 30.0, 3);
 
        ....
Dans mon main le bout de code marche parfaitement (ici l'image s'affiche correctement).

mais lorsque je mets tout ça dans une fonction de cette manière ci dessous
l'image n'est plus correcte, comme si l'opération ne c'était pas bien déroulée ..

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
 
void Detection(IplImage *source, IplImage *result) {
 
        IplImage *source_hsv;
        IplImage *source_rgb;
 
        source_hsv = cvCloneImage(source);
        source_rgb = cvCreateImage(cvGetSize(source), source->depth, 1);
        result = cvCreateImage(cvGetSize(source_rgb), source_rgb->depth, 1);
 
        cvConvertImage(source, source_rgb, 0);
        cvCvtColor(source, source_hsv, CV_BGR2HSV);
 
        cvCanny(source_rgb, result, 20.0, 30.0, 3);
}
 
int main(void) {
 
       ....
 
       Detection(source, result);
 
       .....
 
       // ici result ne semble pas correcte !
 
       return 0;
}
Je suppose qu'il y a un problème lors du passage d'adresse, en effet
une fois les adresses passées à la fonction Detection elles sont à nouveaux passées à d'autres fonctions et c'est surment là que ça cloche (?), l'adresse correcte n'est pas donnée ou autre (?).

Qu'en pensez-vous ?

merci,

PS: J'utilise GCC,