Bonjour,

Je travaille en ce moment sur la bibliothèque opencv afin de réaliser un projet universitaire qui doit détecter un certain nombre de couleurs sur une image issue d'une webcam et enregistrer leurs coordonnées dans différents fichiers.

CEPENDANT, ma question n'a rien a voir avec cette bibliothèque.

Les couleurs ainsi que les flux sont enregistrées dans un vector.
Cependant, je me heurte à un problème lors de la création de flux dans un vector. Voici le code, ce sera plus parlant !

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// structure Couleur
struct couleur
{
    int rouge, vert, bleu;
    ofstream file;
};
 
// Mon vector dans le main
vector<couleur> couleurs;
 
// Fonction ajoutant un point au vector lorsqu'on clique sur l'image
void add_point (int event, int x, int y, int flags, void* param)
{
    int precision=2;
    // Conversion param
    vector<couleur> *couleurs = (vector<couleur>*) param;
 
    if (event == CV_EVENT_LBUTTONDOWN) {
 
        // Création d'une couleur
        couleur colorTemp;
        colorTemp.rouge=getPixel1(image, y, x, 2);;
        colorTemp.vert=getPixel1(image, y, x, 1);
        colorTemp.bleu=getPixel1(image, y, x, 0);
 
        // Création du flux de sortie pour enregistrer les coordonnées
        ostringstream ossRouge; // conversion int en string
        ossRouge << colorTemp.rouge;
        string sRouge = ossRouge.str();
 
        ostringstream ossVert;
        ossVert << colorTemp.vert;
        string sVert = ossVert.str();
 
        ostringstream ossBleu;
        ossBleu << colorTemp.bleu;
        string sBleu = ossBleu.str();
 
        string nameFile (sRouge + "_" + sVert + "_" + sBleu + ".txt");
 
        // Ouverture du fichier
        colorTemp.file.open(nameFile.c_str(), ios::out | ios::trunc);
        // Si on a réussit à créer le fichier
        if (colorTemp.file) {
            // Ajout de la couleur au vector
            couleurs->push_back(colorTemp);
        }
    }
}
J'ai testé plusieurs façon mais celle-ci me parait la plus "propre".
Quelque chose vous parait-il incohérent ?
Est-il possible d'utiliser les flux dans les vector ?
Ou alors savez vous comment résoudre mon problème ?