2017-10-04 499 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); 
} 
相关问题