我的应用是检测硬币。我已经使用 OpenCv 完成了大部分工作。我正在使用 CannyDetection 和 houghTransform 来检测图像圆圈。
但是我没有得到正确的硬币圈,我认为 ThresoldValues 传递给 cannyEdgeDetector 可能有问题。谁能告诉我如何选择阈值来检测硬币圈。
我的应用是检测硬币。我已经使用 OpenCv 完成了大部分工作。我正在使用 CannyDetection 和 houghTransform 来检测图像圆圈。
但是我没有得到正确的硬币圈,我认为 ThresoldValues 传递给 cannyEdgeDetector 可能有问题。谁能告诉我如何选择阈值来检测硬币圈。
不幸的是,没有神奇的数字。圆圈检测很大程度上取决于您传递给的参数cvHoughCircles()
,并且它们对硬币的大小很敏感,硬币的大小会根据相机的接近程度而变化。
例如检查这个答案:Simple object detection using OpenCV and machine learning
该示例对特定大小的硬币产生了奇迹。但是,如果它被相机捕获并且我们移动它,硬币的大小会发生变化,应用程序将无法再提供如此准确的结果。
我要说的是,您需要在相机和硬币之间保持固定距离才能使这种方法起作用。找到一个适合你的距离,然后调整函数的参数,直到你满意为止。