Я пытаюсь создать пустую последовательность (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
Я не могу найти ничего, что я мог бы использовать для построения последовательности, элементами которой были бы пары точек.Я хотел бы получить доступ к элементам моей созданной последовательности таким же образом, как я получаю доступ к строкам, которые я получаю из преобразования Хафа:
for (int i=0; i < mylines->total; ++i){
CvPoint *line = (CvPoint *)cvGetSeqElem(mylines, i);
...
... line[0].x ...
... line[1].y ...
...
}
Кроме того, как бы я вставил элементы в такую последовательность?: /
Причина вопроса в том, что у меня уже есть довольно сложная функция, работающая с CvSeq
строками, возвращенными функцией cvHoughLines2()
, и я хотел бы использовать ее на некоторых произвольных строках.создаст на картинке (в целях тестирования и т. д.).Я искал ответ на аналогичный вопрос, но ничего не смог найти ...: (*
Большое спасибо всем за помощь!
РЕДАКТИРОВАТЬ: нашел решение.
Похоже, единственное, что нужно сделать, - это полностью опустить флаги, указывающие, что вы не будете использовать какой-либо из предопределенных типов (например, точек), и просто указать правильный размер последовательности.компонент:
CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvPoint)*2, memStorage);
Я могу добавить к хранилищу, передав указатель на двухточечный массив функции push
:
CvPoint points[2];
... (initialize the points) ...
cvSeqPush(seq, &points);
Таким образом, я могу получить доступ кпоследовательность так же, как я получил доступ к выходу преобразования Хафа.