Я пишу код для сопоставления шаблонов с использованием cv :: matchTemplate, но я столкнулся с некоторыми проблемами с двумерным вектором векторов (vov), который я создал, который я назвал vvABC. На данный момент мой vov имеет 10 элементов, которые могут меняться в зависимости от значений, которые я передаю при запуске кода.
Моя проблема перемещается из одного столбца в мой vov к следующему, поэтому я могу рассчитать размер. Из моего понимания того, как работает vov, если у меня есть свои элементы, хранящиеся в моем вове, как:
C_A C_B
0 0
1 1
2 2
3
4
5
6
Чтобы вычислить размер первого столбца, я должен просто сделать что-то вроде: vvABC [0].size(), чтобы получить размер первого столбца (который в этом случае дал бы 3) и vvABC [1].size() чтобы получить размер второго столбца (который даст 7). Проблема, с которой я столкнулся, заключается в том, что оба они дают "3" в обоих случаях, что, очевидно, неверно.
Может кто-то, пожалуйста, помогите мне, как я могу получить правильный размер следующего столбца?
Я сохранил свои обнаружения в своем vvABC, теперь я хочу, чтобы они соответствовали им по одному.
Большое спасибо, ребята, особенно. JGab, после нескольких отладочных выходов, я наконец обнаружил, что мой вектор векторов не заполняется так, как я думал, это... еще раз спасибо и мои извинения за мой запоздалый ответ.
Похоже, вы сделали ошибку здесь:
for (uint iCaTemplate = iCa + 1; iCaTemplate < vvABC[iCa].size(); ++iCaTemplate) {
iCa
- это индекс на "первом уровне" вектора (размером 2 в вашем примере выше), то есть столбцы, и вы используете его для прохождения элементов "второго уровня" вектора, то есть строк.