问题:
编写一个 Java 应用程序让用户捕获/上传任何图像。之后,程序是从图像中检测一分硬币、五分硬币、一角硬币和四分之一硬币,并显示硬币总数(例如 1.21 美元)。任何其他现金形式(如账单、票据、支票)都将被忽略。
不使用开源库。
我需要知道的:
经过大量研究后,我发现 Hugh 变换实现可以提供帮助。就个人而言,我学习过商业经济学,对复杂数学的了解非常有限。
- 有人可以指导我找到可以从初学者的角度学习 Hugh Transform 的资源吗?
假设我找到了一种检测圆(椭圆)的方法。如何区分不同种类的硬币。
- 颜色无济于事,因为只有一分钱有铜色。所有其他类型的硬币都是银色。
- 半径或直径也无济于事,因为照片缩放级别也会影响输出。
- 最后,我们无法与其他硬币进行相对比较,因为图片中可能不存在镍或便士。
我知道这是一个开放式问题。我们将不胜感激任何初学者级别的帮助和指导。
最佳答案
您有两个不同的问题。第一个是简单地找到图像上的任何圆圈。这就是霍夫变换所做的。第二个是将发现的圆圈与硬币相关联。您将在这里需要非常复杂的特征检测算法,我不确定您是否有必要从头开始编写所有代码而不使用任何开放库。所以我建议你停止对霍夫变换的研究或者改变你的任务条件。至于霍夫变换,它是一个非常简单的算法,没有任何复杂的数学运算。如果你对它的实现有任何问题,你可以查看 opencv 库及其开放的 source code并将其用作您自己实现的起点。
关于java - 使用 Java(无开源库)从图像中检测硬币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29585038/