在我的項目中我使用cvFindContours來檢測對象。 有了結果,我想標記輸入圖像的roi(如果檢測到的斑點之間的距離很高,我想迭代roi的標記)。如何合併2個CvRects與cvContour結果的最小距離
我的問題是,從找到的斑點幾個rects重疊或是一個更大的斑點的一部分。 是否有一個快速的解決方案來移除內部斑點並以最小距離合並斑點?
例如:
在我的項目中我使用cvFindContours來檢測對象。 有了結果,我想標記輸入圖像的roi(如果檢測到的斑點之間的距離很高,我想迭代roi的標記)。如何合併2個CvRects與cvContour結果的最小距離
我的問題是,從找到的斑點幾個rects重疊或是一個更大的斑點的一部分。 是否有一個快速的解決方案來移除內部斑點並以最小距離合並斑點?
例如:
您可以檢查是否矩形使用operator& of cv::Rect overlaping:
cv::Rect a(x1,y1,w1,h1);
cv::Rect b(x2,y2,w2,h2);
cv::Rect intersect = a&b; // if intersect is not empty, the rect overlaps
至於你的「最小距離」,有沒有辦法做到這一點使用標準OpenCV的功能。你必須確定矩形之間的「距離」是什麼:它們中心之間的距離(不推薦)?邊界之間的距離?然後提醒你有2個維度。你可以做到,但你必須自己編寫代碼。
嗨,我在JavaCV中實現了這一點。謝謝 –
增加一個示例圖像表示讚賞。 –