Я разрабатываю функции визуализации груди для распознавания объектов, используя FlannBasedMatcher для вычисления пространственных гистограмм.
Mat ComputeSpatialHistogram(Mat features, Mat vocabulary, int* region_index, int level, Ptr<DescriptorMatcher> flann_matcher)
{
int vocab_size = vocabulary.rows;
Mat descriptor = Mat::zeros(1, vocab_size*my_pow(4, level), CV_32FC1);
if (features.rows > 0)
{
vector<DMatch> matches;
flann_matcher->match(features, matches);
int word_idx, region_idx, descr_idx;
for (int i = 0; i < matches.size(); i++){
word_idx = matches[i].trainIdx;
region_idx = region_index[i];
descr_idx = vocab_size*region_idx + word_idx;
descriptor.at<float>(0, descr_idx) = descriptor.at<float>(0, descr_idx) + 1.0f;
}
}
return descriptor;
}
Я получаю сообщение об ошибке при завершении выполнения области if(features.rows > 0). Можете вы помочь мне?
i
для обозначения двух разных вещей: одна — вектор, а другая — указатель на буфер, размер которого нам неизвестен. Эта функция должна либо принимать размер максимального числа значений region_index, либо быть переписана для использования std::vector‹int› для region_index. В любом случае цикл нужно переписать так, чтобы вы не переступили край и не начали индексировать недопустимые записи region_index. Если внесение этого изменения решит проблему, я сделаю это ответом. Прямо сейчас это комментарий к выполненному кодированию. - person PaulMcKenzie   schedule 11.06.2015I get a heap corruption error
Запись за пределы массива может привести к повреждению кучи. Это ошибки, которые я вижу в коде, который вы разместили, и я даже не знаюcv
. - person PaulMcKenzie   schedule 11.06.2015The size of region_index and matches is equal to features.cols,
Если бы я получал доллар каждый раз, когда кто-то говорит, что это работает без моих доказательств, поверьте мне, я был бы богатым человеком. В дополнение к тому, что я сказал ранее, мы понятия не имеем, указывает ли этот указатель на допустимую память или нет. Помните, что вы получаете сбой, и это может быть вызвано всеми вещами, которые я упомянул. - person PaulMcKenzie   schedule 11.06.2015