Как применить полилинии функции OpenCV () к спискам в Переполнении стека

У меня такой результат std::list<std::list<cv::Point2i>> и я хотел бы визуализировать результат с помощью polylines() а также imshow(), Есть ли способ реализовать это без необходимости копировать элементы списка в векторы?

2

Решение

К сожалению, ответ — нет. cv::polylines принимает только постоянно хранящиеся данные. Так что он не может обрабатывать точки, хранящиеся в std::list,

Если вы не хотите хранить свои очки в std::vector Вы можете реализовать polylines за std::list,

Например:

void polylines(cv::Mat& img, const std::list<std::list<cv::Point2i>>& polylines)
{
for (auto& polyline : polylines)
{
auto current = polyline.begin();
auto next = std::next(current, 1);
for (; next != polyline.end(); current++, next++)
{
cv::line(img, *current, *next, cv::Scalar(255));
}
}
}

Тогда вы можете позвонить cv::imshow для рисования.

3

Другие решения


По вопросам рекламы [email protected]