Aruco DetectMarkers实施Emgu C#

Aruco DetectMarkers实施Emgu C#,c#,visual-studio,emgucv,aruco,C#,Visual Studio,Emgucv,Aruco,我想使用detectMarkers功能检测ArUco标记。我正在使用Emgu用c#编写代码。当我使用该函数时,会出现多个错误。我在这个链接中遵循这个例子。这是我的代码: Dictionary.PredefinedDictionaryName name = new Dictionary.PredefinedDictionaryName(); Dictionary Dict = new Dictionary(name); VectorOfVectorOfPointF Corners = new Ve

我想使用
detectMarkers
功能检测ArUco标记。我正在使用Emgu用c#编写代码。当我使用该函数时,会出现多个错误。我在这个链接中遵循这个例子。这是我的代码:

Dictionary.PredefinedDictionaryName name = new Dictionary.PredefinedDictionaryName();
Dictionary Dict = new Dictionary(name);
VectorOfVectorOfPointF Corners = new VectorOfVectorOfPointF();
VectorOfInt Ids = new VectorOfInt();
DetectorParameters Parameters = new DetectorParameters();

//If I uncomment this I get rid of some errors but new errors arise
/*
Parameters.AdaptiveThreshWinSizeMin = 5;
Parameters.AdaptiveThreshWinSizeMax = 21;
Parameters.AdaptiveThreshWinSizeStep = 4;
*/

VectorOfVectorOfPointF Rejected = new VectorOfVectorOfPointF();
ArucoInvoke.DetectMarkers(imgOriginal, Dict, Corners, Ids, Parameters, Rejected);
注释的三行错误为

CvException: OpenCV: params->adaptiveThreshWinSizeMin >= 3 && params->adaptiveThreshWinSizeMax >= 3
在三行未注释的情况下,会出现另一个错误

OpenCV: minPerimeterRate > 0 && maxPerimeterRate > 0 && accuracyRate > 0 && minCornerDistanceRate >= 0 && minDistanceToBorder >= 0
我是否需要为
DetectorParameters
设置各种默认值?据我在文档中看到的,
DetectorParameters
已经有了默认值。这些默认值不正常吗?还是我出现这些错误的另一个原因


非常感谢您的帮助

我又查过了。在调用
DetectMarkers
函数之前,我声明
参数的所有变量
,就像我在代码的注释部分中使用一些变量一样。现在我声明
参数
拥有的每个变量。我只是给它一个默认值。现在它工作了。

我最近也遇到了同样的问题,并想出了另一个解决方案

出现这些错误的原因是
newdetectorparameters()不使用默认值创建新的参数对象

您可以使用
DetectorParameters.GetDefault(),而不是自己设置每个参数,然后如果需要默认值以外的内容,则更新特定参数

因此,只需替换:

DetectorParameters Parameters = new DetectorParameters();
与:

DetectorParameters Parameters = DetectorParameters.GetDefault();