【问题标题】:OpenCV android - How to recognize specific objectsOpenCV android - 如何识别特定对象
【发布时间】:2018-02-11 09:05:24
【问题描述】:

我一直在使用 OpenCV 在 Java 中制作识别 Android 上的车灯符号的应用程序。我从手机的相机中拍摄图像。我使用 OpenCV 3.2.0 版本。到目前为止我做了什么:

  1. 过滤掉图像中的颜色
  2. 降低噪音
  3. 按大小检测对象
  4. 按颜色对对象进行排序(将对象与相同对象的颜色进行比较)

检测到的物体:

过滤掉的颜色:

识别这些(二值图像)对象有什么好的选择?我看了一下 HOG、HAAR 和 k-NN 算法。但是我很难获得一些有用的信息(在哪里下载带有算法的文件或训练算法)。或者我错过了什么?我在 Windows 10 上做所有事情。说出你的意见。

【问题讨论】:

    标签: android opencv machine-learning opencv3.0


    【解决方案1】:

    HAAR 将是检测特定标志的好方法。假设您知道如何训练您的级联模型,您可以在 Java here 中找到一个很好的示例来使用您的模型来识别标志。

    但是如果你不知道如何训练你的 HAAR 模型,你可以参考OpenCV reference。使用 OpenCV 的命令行工具训练你的 HAAR 模型有点复杂,但是here 有一个很好的 GUI 来训练你的模型。

    然后您可以为每个标志训练模型并使用每个标志的分类器识别图像中的标志,但这会有点耗时

    更新:

    要学习你的级联模型命令行和官方方式(OpenCV 3.x),你可以试试this

    【讨论】:

    • 感谢您的回答。我在 opencv 3.x 版本中看到过,您可以使用 opencv 在项目中训练您的模型。有些课程允许这样做。你不必有任何其他程序来训练它。还是我搞砸了什么?我不确定。
    • 其实训练级联模型等丰富模型是一个开发时间的过程;所以 OpenCV 本身提供的方式是使用它的命令行工具,如here 所述。但是可以使用 OpenCV 类来训练更简单的模型,例如训练 SVM。
    • 感谢您的建议。匹配形状会不会简单得多?或者训练算法是否切实可行?因为我认为这些算法是用于识别大量图像的。现在我一直通过匹配形状来识别。
    • 匹配形状是什么意思?如果您只想在图像中找到多边形和圆形,则可以找到标志位置;但是标志内容呢(例如圆形标志可能是“禁止行人”标志或“禁止喇叭”标志)?
    • 我的意思是,在 opencv 中,我可以找到从相机拍摄的物体的轮廓。我对高质量的对象做同样的事情。之后我比较轮廓,然后我得到它们的相似程度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多