gpt4 book ai didi

python - OpenCV - 使用实时摄像头检测托盘中丢失的硬币

转载 作者:太空宇宙 更新时间:2023-11-03 22:21:25 25 4
gpt4 key购买 nike

我正在构建一个系统来检测从托盘中拾取的硬币。这个盘子会放在公共(public)场所。人们会捡起一枚或多枚硬币,但预计会在一段时间后将它们收回。

enter image description here

我会通过顶部的网络摄像头进行直播。我将有一个校准步骤,比如在一天的开始,捕获托盘的初始状态,用于与实时馈送进行比较。正如您在示例图像中所见,一开始可能有一些插槽是空的。

我需要检测最初有硬币的老虎机,但在一天中的任何给定时间点都没有硬币。

我正在尝试使用 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 等以多种方式完成此操作。我通过颜色阈值来完成

enter image description here

然后用同样的方法为硬币制作一个面具。

enter image description here

现在从每枚硬币的中心向您的方框掩码填充。它只会保留那些没有硬币的人。

enter image description here

现在您可以将其与您的初始掩码进行比较,以确定是否所有硬币都存在

enter image description here

这不包括帧减法。所以您不必担心硬币在盒子中的不同位置。您唯一需要确定的是制作面具的照明条件。如果您想确保硬币返回到同一个盒子,您应该进行模板匹配等,这同样需要努力。

关于python - OpenCV - 使用实时摄像头检测托盘中丢失的硬币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48698375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com