我正在使用OpenCV Contrib的ChAruCo标记跟踪。我想跟踪多个面板,但是创建标记面板的机制却不尽人意。
我所想象的是拥有一个字典(说,DICT_4X4_50),以使用字典中不同的ID范围来创建许多标记。 CharucoBoard :: create()接受字典并使用标记0-X创建木板。我想在范围的开头添加一个偏移量。
如果我可以创建板,则cv :: aruco :: detectMarkers()输出ID,这些ID可以确定视图中的板。是否支持此功能;如果不支持,应该如何跟踪多个目标?
答案 0 :(得分:2)
您可以简单地在Board
类的向量ID中向元素添加偏移量。我无法告诉您这是否“受支持”,但我们将其用于非charuco板,并且效果很好。
由于charuco板索引nearestMarkerIdx
是ids
向量的索引,因此应该可以解决问题。
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;
}