我正在C ++中使用OpenCV 3.4.1,正在处理一些图像数据。为了执行处理,我将OpenCV返回的KeyPoints转换为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
垫子输出:
感谢您的帮助!