Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将OpenCV函数polylines()应用于C++;_C++_List_Opencv_Imshow - Fatal编程技术网

C++ 如何将OpenCV函数polylines()应用于C++;

C++ 如何将OpenCV函数polylines()应用于C++;,c++,list,opencv,imshow,C++,List,Opencv,Imshow,我有这样一个结果std::list,我想使用polylines()和imshow()将结果可视化。有没有一种方法可以实现这一点,而不必将列表元素复制到向量 不幸的是,答案是否定的。cv::polylines只接受连续存储的数据。因此,它无法处理存储在std::list中的点 如果您不想将点存储在std::vector中,您可以为std::list实现polylines 例如: void polylines(cv::Mat& img, const std::list<std::lis

我有这样一个结果
std::list
,我想使用
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));
        }
    }
}
void多段线(cv::Mat和img、const std::list和多段线)
{
用于(自动和多段线:多段线)
{
自动当前=多段线。开始();
自动下一步=标准::下一步(当前,1);
对于(;下一步!=polyline.end();当前++,下一步++)
{
cv::line(img,*current,*next,cv::Scalar(255));
}
}
}

然后,您可以致电
cv::imshow
进行绘图。

不复制是不行的,列表中没有连续的数据。谢谢您的回答。我还没有想到数据是否是连续的。。。