我在一组图像的 yml 文件中有一个词汇表(簇的质心)。现在我已经从一个图像中获取了一个新的 SURF 描述符。现在我想检查这个新的关键点描述符到词汇表有多远或接近一些阈值,并保存好匹配和坏匹配。一旦我有好的和坏的描述,我如何在图像上将它们标记为关键点。我对 opencv 很陌生。我已经通过 knnMatch 但它只能通过指定 k.could 给出好的匹配有人通过建议或示例代码帮助我。
这是我的示例代码
Mat dictionary;
FileStorage fs("../bin/dictionary1.yml", FileStorage::READ);
fs["vocabulary"] >> dictionary;
fs.release();
std::vector<KeyPoint> keypoints_1;
detector.detect( img_1, keypoints_1 );
SurfDescriptorExtractor surfDesc;
Mat descriptors1;
surfDesc.compute(img_1, keypoints_1, descriptors1);
我想做这样的事情
for all image descriptor
for all vacabulary
if(dist is less)
goodmatch
cvcolor=blue
else
badmatch
cvcolor=red