gpt4 book ai didi

OpenCV 在创建后更改关键点或描述符参数

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:03 26 4
gpt4 key购买 nike

在最近的版本中,OpenCV 允许使用 create 函数轻松创建关键点检测器、描述符或匹配器,例如

cv::Ptr<cv::FeatureDetector> featureDetector = cv::FeatureDetector::create("FAST")

此调用 支持参数。例如。 SURF、FAST等都有很多参数。

我现在如何更改它们?我已经弄清楚了它的一部分,例如我可以通过

获取参数列表(字符串列表)
std::vector<std::string> parameters;
featureDetector->getParams(parameters);

显然我需要以某种方式访问​​ cv::Algorithm* 对象以调用 set(char*, bool/int/float/... value),但我不知道怎么样。

最佳答案

实际上,featureDetector 已经是一个Algorithm 对象,即您可以直接在其上简单地设置参数,例如

featureDetector->set("someParam", someValue)

如果你想知道特征检测器的参数,你可以使用这个函数来打印它们:

void ClassificationUtilities::printParams( cv::Algorithm* algorithm ) {
std::vector<std::string> parameters;
algorithm->getParams(parameters);

for (int i = 0; i < (int) parameters.size(); i++) {
std::string param = parameters[i];
int type = algorithm->paramType(param);
std::string helpText = algorithm->paramHelp(param);
std::string typeText;

switch (type) {
case cv::Param::BOOLEAN:
typeText = "bool";
break;
case cv::Param::INT:
typeText = "int";
break;
case cv::Param::REAL:
typeText = "real (double)";
break;
case cv::Param::STRING:
typeText = "string";
break;
case cv::Param::MAT:
typeText = "Mat";
break;
case cv::Param::ALGORITHM:
typeText = "Algorithm";
break;
case cv::Param::MAT_VECTOR:
typeText = "Mat vector";
break;
}
std::cout << "Parameter '" << param << "' type=" << typeText << " help=" << helpText << std::endl;
}
}

关于OpenCV 在创建后更改关键点或描述符参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com