51 std::vector<tensorflowtag::TensorflowTag>& vDetectedTensorflowTags,
52 const std::vector<TagDetector*>& vTagDetectors,
56 size_t siNumTagDetectors = vTagDetectors.size();
59 std::vector<std::vector<arucotag::ArucoTag>> vDetectedArucoTagBuffers(siNumTagDetectors);
60 std::vector<std::vector<tensorflowtag::TensorflowTag>> vDetectedTensorflowTagBuffers(siNumTagDetectors);
63 std::vector<std::future<bool>> vDetectedArucoTagsFuture;
64 std::vector<std::future<bool>> vDetectedTensorflowTagsFuture;
67 for (
size_t siIdx = 0; siIdx < siNumTagDetectors; ++siIdx)
70 if (vTagDetectors[siIdx]->GetIsReady())
73 vDetectedArucoTagsFuture.emplace_back(vTagDetectors[siIdx]->RequestDetectedArucoTags(vDetectedArucoTagBuffers[siIdx]));
75 vDetectedTensorflowTagsFuture.emplace_back(vTagDetectors[siIdx]->RequestDetectedTensorflowTags(vDetectedTensorflowTagBuffers[siIdx]));
81 for (
size_t siIdx = 0; siIdx < vDetectedArucoTagsFuture.size(); ++siIdx)
84 vDetectedArucoTagsFuture[siIdx].get();
85 vDetectedTensorflowTagsFuture[siIdx].get();
90 vDetectedArucoTags.emplace_back(tTag);
96 vDetectedTensorflowTags.emplace_back(tTag);
103 std::set<int> setIds;
105 while (szIdx < vDetectedArucoTags.size())
108 if (setIds.count(vDetectedArucoTags[szIdx].nID))
110 vDetectedArucoTags.erase(vDetectedArucoTags.begin() + szIdx);
114 setIds.insert(vDetectedArucoTags[szIdx].nID);
136 std::vector<arucotag::ArucoTag> vDetectedArucoTags;
137 std::vector<tensorflowtag::TensorflowTag> vDetectedTensorflowTags;
138 LoadDetectedTags(vDetectedArucoTags, vDetectedTensorflowTags, vTagDetectors,
true);
146 stIdentifiedArucoTag = tTag;