1
我有這樣的結果,如std::list<std::list<cv::Point2i>>
,我想用polylines()
和imshow()
來顯示結果。有沒有辦法實現這一點,而不必複製列表元素向量?如何將OpenCV函數多義線()應用於C++中的列表
我有這樣的結果,如std::list<std::list<cv::Point2i>>
,我想用polylines()
和imshow()
來顯示結果。有沒有辦法實現這一點,而不必複製列表元素向量?如何將OpenCV函數多義線()應用於C++中的列表
不幸的是,答案是否定的。 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
繪製。
沒有辦法沒有複製,列表沒有連續的數據。 – berak
感謝您的回答。我還沒有想過數據是連續還是不連續...... – jkl