如何将 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
画图了
我有这样的结果 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
画图了