- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在构建一个系统来检测从托盘中拾取的硬币。这个盘子会放在公共(public)场所。人们会捡起一枚或多枚硬币,但预计会在一段时间后将它们收回。
我会通过顶部的网络摄像头进行直播。我将有一个校准步骤,比如在一天的开始,捕获托盘的初始状态,用于与实时馈送进行比较。正如您在示例图像中所见,一开始可能有一些插槽是空的。
我需要检测最初有硬币的老虎机,但在一天中的任何给定时间点都没有硬币。
我正在尝试使用 OpenCV 的几种方法:
SSIM 差异:我可以使用 SSIM 找出我的实时图像帧和初始状态之间的差异。但是,许多插槽大于相应的硬币尺寸(例如,顶部两行)。这可能意味着,如果硬币最初放在中心,但后来又放回去接触其中一个边缘,我们可能会得到误报。
Blob 检测:或者,我可以预先输入(或检测)插槽坐标。然后在每个插槽内进行 Blob 检测。如果一个 Blob 以原始状态存在,但在相机框架中丢失,这意味着硬币已被捡起。但是,如果硬币和托盘之间的对比度较低,准确的 Blob 检测可能是一个挑战。
我可能还需要注意由于四处移动的人的阴影而导致的轻微照明变化。
关于这些的任何想法或关于可以尝试的替代方法的任何指示?是否有任何类似的实现可供我学习?
非常感谢。
编辑:感谢@I.Newton 的建议。对于那些偶然发现这个问题并希望从示例实现中受益的人,请看这里:https://github.com/kewats/computer-vision-samples/tree/master/image-processing/missing-coins-detection
最佳答案
如果您完全控制光照条件,则可以使用简单的颜色阈值来解决问题。
首先为盒子制作 mask 。您可以通过颜色阈值或使用自适应阈值或 canny edge 等以多种方式完成此操作。我通过颜色阈值来完成
然后用同样的方法为硬币制作一个面具。
现在从每枚硬币的中心向您的方框掩码填充。它只会保留那些没有硬币的人。
现在您可以将其与您的初始掩码进行比较,以确定是否所有硬币都存在
这不包括帧减法。所以您不必担心硬币在盒子中的不同位置。您唯一需要确定的是制作面具的照明条件。如果您想确保硬币返回到同一个盒子,您应该进行模板匹配等,这同样需要努力。
关于python - OpenCV - 使用实时摄像头检测托盘中丢失的硬币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48698375/
我想在同一运行时间内拥有多种货币。默认节点模板中插入了 Balances 托盘,但如果我正确的话,它只能处理一种货币。 如何多次重复使用托盘? 最佳答案 Pallet 可以实例化,这样您就可以在同一运
我正在尝试使用一段代码打开和关闭计算机的 CD 托盘。我一直在使用 MCI 命令,并将 winmm.lib 包含在我的项目配置的附加依赖项中。我还包含了 windows.h 和 mmsystem.h。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我正在使用electron-react-boilerplate开发 Electron 应用程序(使用electron-builder打包应用程序)。 我想创建托盘,但是它需要图标路径或 native
有没有办法选择在 Java 中打印时使用哪个出纸盒/托盘?有一个属性 MediaTray 允许您选择输入托盘,但我找不到允许您选择输出的属性。 最佳答案 除了MediaTray , 有一个 Desti
我是一名优秀的程序员,十分优秀!