使用OpenCV时,经常涉及到一些版本迁移的问题,而在版本迁移的过程中经常会遇到一些莫名奇妙的bug,比如在使用低版本的OpenCV
Ptr<FeatureDetector> detector = FeatureDetector::create( "SIFT" );
Ptr<DescriptorExtractor> descriptorExtractor = DescriptorExtractor::create( "SIFT" );
Ptr<DescriptorMatcher> descriptorMatcher = DescriptorMatcher::create( "BruteForce" );
if( detector.empty() || descriptorExtractor.empty() || descriptorMatcher.empty() )
{
cout << "Can not create detector or descriptor exstractor or descriptor matcher of given types" << endl;
return -1;
}
进行图像匹配时,会出现检测子为空的情况
查阅OpenCV API reference
可见在高版本的OpenCV中,图像匹配算法迁移到了nonfree模块中,此时要添加initModule_nonfree();函数才可以。