sift обнаружить и вычислить получить ключ и дескриптор другого размера, что не так? - PullRequest
0 голосов
/ 14 мая 2019
    Ptr<SIFT> detector = xfeatures2d::SIFT::create();

    vector<cv::KeyPoint> key_points_1, key_points_2;

    Mat dstImage1, dstImage2;
    detector->detectAndCompute(srcImage1, Mat(), key_points_1, dstImage1);

Я хочу извлечь функцию просеивания изображения;но когда я запускаю код выше, возникает странная ситуация;key_points_1.size() != dstImage1.size(); как мы все знаем, дескриптор будет создаваться и вычисляться по ключевым точкам, поэтому они должны иметь одинаковый размер.Однажды я столкнулся с такой ситуацией, поэтому я перестраиваю opencv и opencv_contribute, код будет в порядке;но через несколько дней этот баг снова показывают, я запутался.подробно: vector<keypoint>& keypoint; перед запуском функции detectAndCompute до '}', keypoint.size() = descriptor.size, все в порядке;но при возврате основной функции keypoint.size() изменились.

WIN7 Visual studio 2017 opencv 3.4.1 opencv_contribute 3.4.1 подробно: https://upload.cc/i1/2019/05/14/9Me5hT.jpg

keypoint1.size = 156 ,but descriptor1.size = 224
keypoint2.size = 143 ,but descriptor2.size = 205
...