【问题标题】:Image recognition - dice in an image [closed]图像识别 - 图像中的骰子 [关闭]
【发布时间】:2018-10-08 00:03:45
【问题描述】:

我正在开发一个 WPF 应用程序,我需要从图像文件(例如由我的网络摄像头拍摄的)/BitmapSource 中“查找”/“读取”骰子。

所以我需要知道找到的骰子数量(1、2、3、4、5 还是 6?)及其数量...

我在 google 上进行了搜索,但找不到方法……到目前为止,我唯一能找到的是 EmGu(英特尔 OpenCV 图像处理库的 .NET 包装器)。但是,这似乎非常广泛。

一些进一步的信息/想法/经验会有所帮助。

【问题讨论】:

    标签: c# wpf image image-recognition dice


    【解决方案1】:

    首先:要完成这项任务,您需要一个视觉库(如 OpenCV),没有办法。否则,您必须自己实现所需的图像处理。

    第二:根据您捕获图像的环境,对于机器来说,这项任务可能真的很难完成。对于机器视觉,建议图像符合以下条件:

    • 灰值
    • 平滑和深色背景
    • 前景中的物体很少
    • 与背景形成良好对比的待识别对象

    第三:在这里使用机器视觉完成任务是一个小指南。与以往一样,有多种方法可以做到这一点。

    a) 使用二值化

    1. 过滤:应用过滤器,例如中值滤波器
    2. 二值化:二值化图像并选择骰子的区域
    3. 形态学:应用形态学操作(例如打开)以去除选定但不想要的背景部分
    4. 计数:像骰子一样计数具有相似特征(宽度、..)的区域
    5. counting:计算先前选择的骰子区域中的孔数

    b) 机器学习

    如果你敢,你也可以尝试机器学习方法,例如使用来自谷歌的 TensorFlow。在这种情况下,您没有上面提到的大部分限制,而是需要用数百张图像教授算法。图像需要正确分类/标记(“no.1”,..)。如果教得正确,它还可以识别不同的骰子类型(大小、颜色、..),这在 a) 中很难做到。

    【讨论】:

    • 谢谢,有帮助!我将从方法 a) 开始,并且只识别 1 个骰子……我知道这是一项艰巨的任务,而且我不会得到 100% 完美工作的解决方案,但这不是重点,我想开始学习这个主题,因此您的信息非常棒!
    【解决方案2】:

    我不了解图像识别,我认为仅使用掷骰子程序可能会更简单。
    我知道人工智能很难。很难。
    在这里使用 AI 最简单的方法可能是教 AI 点数和骰子数。

    假设您的头顶上有网络摄像头,并安排图片中唯一的白色物体是斑点。
    您可以拍摄一张照片,然后使用图片中的 xy 坐标“只是”遍历它以检查图像中的白色。 当您找到一个时,任何连接的白色仍然是那个位置。
    任何未连接的白色都是另一个地方。
    你会想要调整这个过程,让闪亮的部分或任何不被拾取的东西。 如果骰子不是绿色的,而你在绿色 baize 上滚动,那么当你击中非绿色时,同样是骰子。

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 2014-03-09
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2016-12-05
      • 2016-07-12
      • 1970-01-01
      • 2010-12-07
      相关资源
      最近更新 更多