Преобразование вектора <keypoint>в Mat, но первые два элемента теряются - PullRequest
0 голосов
/ 19 сентября 2018

Я работаю в 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;
}

Ключевой выход:

[Keypoint output 1

Матовый выход:

Mat output

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...