Я работаю в OpenCV 3.4.1 в C ++ и обрабатываю некоторые данные изображений.Чтобы выполнить обработку, я конвертирую KeyPoints, возвращаемые OpenCV, в Mats, а затем в массивы.У меня есть функция, которая преобразует KeyPoints в Mat, но в этом процессе я иногда теряю первые две строки данных.Это не происходит постоянно, что особенно запутанно.Иногда данные копируются идеально.Я приложил свою функцию ниже, а также примеры вывода, когда он не может быть преобразован должным образом.Обратите внимание, что выходные значения относятся к изображению размером 1280x960 .pgm.
void convKeyPoints2Mat(vector<KeyPoint> kp, Mat& newMat) {
// Variable Declarations
vector<Point2f> points;
vector<KeyPoint>::iterator it;
// Convert vector<KeyPoint> type to type Point2f
for( it= kp.begin(); it!= kp.end();++it)
{
points.push_back(it->pt);
}
// Convert type Point2f to type Mat
newMat = Mat(points);
return;
}
Ключевой выход:
[ 1
Матовый выход:
Спасибо за помощь!