我正在尝试制作一个可以拍摄 Dart 图像并读取分数的程序。到目前为止,我可以通过将其与模型图像进行比较来获得每个 Dart 的位置,如下所示:
但是,这仅在输入图像基本相同的情况下有效。在另一种情况下,电路板的 Angular 略有不同,因此我想也许可以将图像转换为与模型图像匹配的颜色,然后执行上面可以看到的过程。
所以我的问题是:如何使用OpenCV转换最后一张图像以匹配形状和 Dart 板的外观?
最佳答案
Dart 板基本上是平面的。因此,您可以通过单应性对所需的变换进行建模。现在,您可以像here一样执行简单的特征提取和匹配,或者如果速度不那么重要,则可以使用基于强度的参数对齐algorithm(更准确)。
但是,正如评论中已经提到的,事后不会那么简单。 Dart 飞行(视变形而定)很可能会覆盖木板上与实际分数不一致的区域。实际上,即使正面看也很难说。
我认为您将必须找到将 Dart 粘在板上的位置。此外,我认为从某个 Angular 来看,这样做会更容易。也许,您可以在预先检测到差异的区域中拟合线段。
关于opencv - 如何在OpenCV中变换图像以匹配圆形模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40917453/