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 :
Dans mon main le bout de code marche parfaitement (ici l'image s'affiche correctement).
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); ....
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 ..
Je suppose qu'il y a un problème lors du passage d'adresse, en effet
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; }
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,
Partager