Я пытаюсь создать пустую последовательность (CvSeq
) в OpenCV
, похожую по структуре, на ту, которая возвращается, например, cvHoughLines2
(при использовании в CV_HOUGH_PROBABILISTIC
) - последовательность пар точек.
Я нашел способ сделать последовательность (несвязанных) точек (надеюсь, что это правильно для точечной последовательности):
CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(
CV_SEQ_FLAG_SIMPLE | CV_SEQ_KIND_SET | CV_SEQ_ELTYPE_POINT,
sizeof(CvSeq), sizeof(CvPoint), memStorage);
но глядя на флаги, доступные для создания CvSeq
, я не могу найти ничего, что мог бы использовать для построения последовательности, чьи элементы были бы точками. Я хотел бы получить доступ к элементам моей созданной последовательности так же, как я получаю доступ к строкам, которые я получаю из преобразования Hough:
for (int i=0; i < mylines->total; ++i){
CvPoint *line = (CvPoint *)cvGetSeqElem(mylines, i);
...
... line[0].x ...
... line[1].y ...
...
}
Также, как бы вставлять элементы в такую последовательность?:/
Причина вопроса заключается в том, что у меня уже есть довольно сложная функция, работающая на CvSeq
строк, возвращаемых функцией cvHoughLines2()
, и я хотел бы использовать ее на некоторых произвольных строках, которые я бы создал на картинке (цели тестирования и т.д.). Я просмотрел весь ответ на аналогичный вопрос, но ничего не нашел...: (
Спасибо вам большое за вашу помощь!
EDIT: найдено решение.
Похоже, единственное, что нужно сделать, - полностью опустить флаги, указывая на то, что вы не будете использовать какой-либо из предопределенных типов (например, точек) и просто укажите правильный размер компонента последовательности:
CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvPoint)*2, memStorage);
Я могу добавить в хранилище, передав указатель на 2-точечный массив функции push
:
CvPoint points[2];
... (initialize the points) ...
cvSeqPush(seq, &points);
Таким образом, я могу получить доступ к последовательности так же, как я обратился к выходу преобразования Hough.