同一词典中具有多个标记的Aruco标记跟踪

时间:2018-11-19 17:05:55

标签: c++ opencv aruco

我正在使用OpenCV Contrib的ChAruCo标记跟踪。我想跟踪多个面板,但是创建标记面板的机制却不尽人意。

我所想象的是拥有一个字典(说,DICT_4X4_50),以使用字典中不同的ID范围来创建许多标记。 CharucoBoard :: create()接受字典并使用标记0-X创建木板。我想在范围的开头添加一个偏移量。

如果我可以创建板,则cv :: aruco :: detectMarkers()输出ID,这些ID可以确定视图中的板。是否支持此功能;如果不支持,应该如何跟踪多个目标?

1 个答案:

答案 0 :(得分:2)

您可以简单地在Board类的向量ID中向元素添加偏移量。我无法告诉您这是否“受支持”,但我们将其用于非charuco板,并且效果很好。 由于charuco板索引nearestMarkerIdxids向量的索引,因此应该可以解决问题。

cv::Ptr<cv::aruco::CharucoBoard> board1 =  cv::aruco::CharucoBoard::create(3, 5, 0.32f, 0.08f, dictionary);
cv::Ptr<cv::aruco::CharucoBoard> board2 = cv::aruco::CharucoBoard::create(3, 5, 0.32f, 0.08f, dictionary);
int id_offset_board2 = board1->ids.size();
for(auto& id: board2->ids)
{
    id += id_offset_board2;
}