c# - Aruco DetectMarkers 实现 Emgu C#
问题描述
我想使用该detectMarkers
功能来检测 ArUco Markers。我正在使用 Emgu 用 c# 编写代码。使用该功能时出现多个错误。我正在关注此链接https://docs.opencv.org/3.4/d5/dae/tutorial_aruco_detection.html中的示例。这是我的代码:
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
函数之前,我声明所有变量,Parameters
就像我在代码的注释部分中所做的那样,使用一些变量。所以现在我声明了所有的变量Parameters
。我只是给它默认值。现在它起作用了。
推荐阅读
- r - 跨日期汇总数据
- vb.net - 程序在从 arduino VB.net 接收数据时丢弃 com 端口
- java - 通过 kubernetes 和 helm 部署为 2 个不同服务的单个 docker 映像。更改应用程序的上下文路径
- pdfbox - 使用 PDFBOX 填写 PDF 表单中的多个字段并在填写后锁定编辑 PDF 文档
- networking - 如何在 Google Kubernetes Engine 中设置特定节点的外部 IP?
- php - 在 WooCommerce 中出现错误时强制重定向到购物车
- python - Python如何使用列表名称作为数据框中的列名
- java - 我如何在另一个类中实现一个类的方法
- python - 无法使用请求从脚本标签中抓取不同专辑的链接?
- c# - 如何修复 Xamarin 'System.ArgumentNullException: '值不能为空。参数名称:地址'异常