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

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

本文关键字:c++ 应用于 列表 opencv 函数 polylines      更新时间:2023-10-16

我有一个这样的结果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进行绘图