Я использую следующую функцию для создания детектора ключевых точек GFTT:
poKpDetector1 = FeatureDetector::create( "GFTT" );
Затем вызовите следующую функцию, чтобы настроить нужные значения для входных параметров:
void FuncSet_GFTT_InpParams( Ptr<FeatureDetector>& poKpDetector1 )
{
poKpDetector1->set( "nfeatures" , MyInpParamsStruct.nKpDet_GFTT1_MaxCornerNo );
poKpDetector1->set( "qualityLevel" , MyInpParamsStruct.dKpDet_GFTT1_QualityLevel );
poKpDetector1->set( "minDistance" , MyInpParamsStruct.dKpDet_GFTT1_MinDistance );
poKpDetector1->set( "useHarrisDetector" , MyInpParamsStruct.bKpDet_GFTT1_UseHarrisDetector );
poKpDetector1->set( "k" , MyInpParamsStruct.dKpDet_GFTT1_HarrisDetectorK );
}
Глядя в features2d_init.cpp, я не смог найти, как я могу использовать функцию «set» (с указателем на тип FeatureDetector) для настройки параметра «blockSize» для GFTT.
Следующие две попытки не увенчались успехом:
poKpDetector1->set( "blocksize", MyInpParamsStruct.nKpDet_GFTT1_BlockSize );
or
(*((cv::GFTTDetector*)((poKpDetector1).obj))).blockSize = MyInpParamsStruct.nKpDet_GFTT1_BlockSize;
Есть ли способ настроить параметр размера блока GFTT, используя только указатель, возвращаемый функцией FeatureDetector::create? Спасибо заранее за любую помощь.