我有這個問題,我不能包裹我的頭。我試圖在視頻中檢測並跟蹤某些內容。因此我使用的功能如GaussianBlur(), threshold(), findContours(),
。OpenCV;排序向量<Rect>並刪除某些條目
findContours()
給我一個輪廓矢量,後來被轉換成了邊界矩形。到現在爲止還挺好。
現在我需要從邊界矩形的向量中得到它們,它們按大小(area)
排序,並且只包含沒有被另一個矩形包圍的矩形。
我試圖畫出一些小圖以便更好的理解,click here for image。
所以我要尋找的是#8
是第一項,其次是#1, #3,....
參賽作品像#2,#4, #9, #10 and #11
應予刪除。
據我所知,載體對於排序和刪除並不理想。於是,我就矢量複製到一個列表,像這樣:
std::list<Rect> sorted_list(boundRect_temp.begin(), boundRect_temp.end());
但我現在無法訪問像區域中的成員變量。問題是算法不應該太耗時,這就是爲什麼我正在尋找一個好的解決方案。也許有一個功能呢?
排序我建議丟棄'list'除非你有經驗證明,它比'VECTOR'代碼快。 – juanchopanza
爲了擴大juanchopanza的評論,如果您使用臨時列表,您必須記住複製數據需要兩次(一次從向量到列表,然後一次回到向量)。 –
嗨,你的圖片不能正常工作 –