Je suis en train de créer une séquence vide (CvSeq
) en OpenCV
d'une structure semblable à celui retourné par, par exemple, cvHoughLines2
(lorsqu'il est utilisé en CV_HOUGH_PROBABILISTIC
) - une séquence de point de paires.
J'ai trouvé un moyen de rendre une séquence de (non connectées) points (j'espère que c'est correct pour un point de la séquence):
CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(
CV_SEQ_FLAG_SIMPLE | CV_SEQ_KIND_SET | CV_SEQ_ELTYPE_POINT,
sizeof(CvSeq), sizeof(CvPoint), memStorage);
mais en regardant les indicateurs disponibles pour la création d' CvSeq
je ne peux pas trouver quelque chose que je pourrais utiliser pour construire une séquence dont les éléments seraient point paires. Je voudrais avoir accès aux éléments de ma séquence créée de la même manière ai-je accès à des lignes que je reçois de la Transformation de Hough:
for (int i=0; i < mylines->total; ++i){
CvPoint *line = (CvPoint *)cvGetSeqElem(mylines, i);
...
... line[0].x ...
... line[1].y ...
...
}
Aussi, comment puis-je insérer des éléments dans une séquence de ce type? :/
La raison de la question est que j'ai déjà assez complexe de la fonction d'exploitation sur un CvSeq
de lignes retournées par un cvHoughLines2()
de la fonction, et je voudrais l'utiliser sur certains arbitraire lignes je voudrais créer dans l'image (à des fins de test, etc...). J'ai regardé partout pour une réponse à une question similaire, mais ne pouvait pas trouver quoi que ce soit... :(
Merci beaucoup à tous pour votre aide!
EDIT: trouvé la solution.
Regarde comme la seule chose qui doit être fait est d'omettre les drapeaux complètement, indiquant que vous ne serez pas en utilisant l'un des types prédéfinis (e.g points), et de donner juste la bonne taille de la séquence composant:
CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvPoint)*2, memStorage);
Je peux qu'ajouter à l'espace de stockage en passant le pointeur de 2 points de tableau à l' push
fonction de:
CvPoint points[2];
... (initialize the points) ...
cvSeqPush(seq, &points);
De cette façon, je peux accéder à la séquence de la même façon que j'ai accédé à la sortie de la Transformation de Hough.