2015-05-20 12 views
1

我有這樣的結果,如std::list<std::list<cv::Point2i>>,我想用polylines()imshow()來顯示結果。有沒有辦法實現這一點,而不必複製列表元素向量?如何將OpenCV函數多義線()應用於C++中的列表

+0

沒有辦法沒有複製,列表沒有連續的數據。 – berak

+0

感謝您的回答。我還沒有想過數據是連續還是不連續...... – jkl

回答

2

不幸的是,答案是否定的。 cv::polylines只接受連續存儲的數據。所以它不能處理存儲在std::list中的點。

如果您不想將您的積分存儲在std::vector中,則可以使用polylines代替std::list

例如:

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繪製。

相關問題