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
进行绘图。不复制是不行的,列表中没有连续的数据。谢谢您的回答。我还没有想到数据是否是连续的。。。