2017-10-04 497 views
0

我使用ArUco標記進行工作,並單獨找回找到的角和標記的ID號。我需要連接ID(int)和角點(cv :: Point2f或cv :: Mat),以便處理特定ID號的角點。如何使用cv :: Point2f(發現標記的點)連接整數值(ID號)

來自第一個找到的標記的標記: int ID = _ids.getMat()。ptr < int>(0)[0];

從第一個標記的角落: Mat corners = _corners.getMat(0);

如何連接它們以搜索身份證號碼並獲得該身份證號碼?

回答

0

這很容易。標誌ID和位置的順序是一樣的:

http://docs.opencv.org/3.1.0/d9/d6a/group__aruco.html#ga306791ee1aab1513bc2c2b40d774f370

如果您有存儲在標準::向量角和IDS可以使用:

std::vector<cv::Point2f> findMarker(const std::vector<std::vector<cv::Point2f>> &_points, 
            const std::vector<int> &indices, int _id) 
{ 
    for(auto &i:indices) 
    { 
     if(i==_id) return _points(&i-&indices[0]); 
    } 
    return std::vector<cv::Point2f>(0); 
} 
相關問題