我正在使用 OpenCV Contrib
中的 ChAruCo 标记跟踪
。我想跟踪多个板,但创建标记板的机制并不符合我的预期。
我想象的是使用一本字典(例如 DICT_4X4_50) 使用字典中不同的 ID 范围创建许多标记。
CharucoBoard::create()
接受字典并使用标记 0-X 来创建板。我想在范围的开头添加一个偏移量。
如果我可以创建板,cv::aruco::detectMarkers()
会输出可以确定 View 中的板的 ID。这是否受支持,如果不支持,我应该如何跟踪多个目标?
最佳答案
您可以简单地向 Board
类中的 vector id 中的元素添加偏移量。我无法告诉您这是否“受支持”,但我们将其用于非 Charuco 板并且工作正常。
由于 charuco 板索引 nearestMarkerIdx
是 ids
vector 的索引,因此应该可以正常工作。
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;
}
关于c++ - 使用同一词典中的多个标记进行 Aruco 标记跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379508/