如何将 OpenCV 函数 polylines() 应用于 C++ 中的列表

How to apply the OpenCV-function polylines() to lists in C++

我有这样的结果 std::list<std::list<cv::Point2i>>,我想使用 polylines()imshow() 可视化结果。有没有办法在不必将列表元素复制到向量的情况下实现这一点?

很遗憾,答案是否定的。 cv::polylines 只接受连续存储的数据。所以它不能处理存储在 std::list.

中的点

如果您不想将积分存储在 std::vector 中,您可以为 std::list 实施 polylines

例如:

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画图了