【问题标题】:opencv-python object detectionopencv-python 对象检测
【发布时间】:2016-07-02 05:30:48
【问题描述】:

我是使用 python 的 opencv 初学者。我有许多 16 位灰度图像,每次都需要在不同的图像中检测相同的对象。在 opencv python 中尝试了模板匹配,但需要为不同的图像采用不同的模板,这可能是不可取的。任何人都可以建议我使用python中的任何算法来有效地做到这一点。

【问题讨论】:

标签: python python-2.7 opencv


【解决方案1】:

你的问题太笼统了。特征匹配是一个非常广阔的领域。 要使用的算法类型完全取决于您要检测的对象、其环境等。

因此,如果您的对象不会改变其在图像中的大小或角度,请使用模板匹配。

如果图像会改变其大小和方向,您可以使用 SIFT 或 SURF。

如果您的对象具有不同于其背景的独特颜色特征,您可以使用 hsv 方法。

如果您必须对一组图像作为对象进行分类,例如所有板球拍都应该被检测到,那么您可以训练一些正图像来告诉计算机对象的外观和负图像来告诉计算机它是如何没有,可以使用 haar 训练来完成。

【讨论】:

    【解决方案2】:

    你可以试试滑动窗口的方法。如果你的对象在所有样本中都相同

    【讨论】:

      【解决方案3】:

      一种方法是寻找已知的颜色、形状和大小。

      您可以首先对图像执行 HSV 阈值,将图像转换为 HSV 颜色空间,然后调用

      cv2.inRange(source, (minHue, minSat, minVal), (maxHue, maxSat, maxVal))
      

      接下来,您可以使用cv2.findContours 查找图像中符合您的颜色要求的所有区域。然后,您可以使用boundingRect 和contourArea 等方法来查找所需对象的特定属性。

      您最终将得到的本质上是一个“管道”,它可以采用框架,并寻找符合您设置的标准的形状。根据您想要做的事情的复杂性(您没有说您要查找的内容),这可能有效也可能无效,但我已经成功地使用了它。

      GRIP 是一个应用程序,可让您以可视方式对事物进行阈值处理,如果您愿意,它还会为您生成 Python 代码。我真的不建议按原样使用生成的代码,因为那样我遇到了一些问题。这是 GRIP 的链接:https://github.com/WPIRoboticsProjects/GRIP

      【讨论】:

        【解决方案4】:

        如果您要检测的对象在每张图像中都有不同的大小并且形状也略有不同,那么我建议您使用该对象的 HaarCascade。如果对象非常一般,那么您可以轻松地在网上找到它的 haar cascade。否则,制作haar cascades并不是很困难(虽然可能会花费一点时间)。 你可以使用 sentdex 的教程制作 HaarCascade here。

        或者如果你想知道如何使用 HaarCascades 那么你可以在这个链接上得到它 here.

        【讨论】:

          猜你喜欢
          • 2013-01-24
          • 2017-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-02
          相关资源
          最近更新 更多