opencv-python对象检测

时间:2016-07-02 05:30:49

标签: python python-2.7 opencv

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

4 个答案:

答案 0 :(得分:0)

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

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

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

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

如果您必须将一组图像分类为对象,例如应该检测所有板球拍,那么您可以训练一些正面图像来告诉计算机对象的外观和负面图像来说明它是怎样的没有,可以使用haar培训来完成。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

执行此操作的一种方法是查找已知颜色,形状和尺寸。

您可以首先在图像上执行HSV阈值,方法是将图像转换为HSV色彩空间,然后调用

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

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

你最终会得到一个基本上是一个“管道”,它可以占用一个框架,并寻找符合你设定标准的形状。根据您想要做的事情的复杂程度(您没有说出您要查找的内容),这可能会或可能不会奏效,但我已经合理地使用了它。

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

答案 3 :(得分:0)

如果要检测的对象在每个图像中都有不同的大小,并且形状也略有不同,那么我建议您使用该对象的HaarCascade。如果该对象非常笼统,则可以轻松地在网上找到它的haar级联。否则,很难进行级联的haar(尽管这可能会花费一些时间)。 您可以使用senddex编写的本教程来制作HaarCascade here

或者,如果您想知道如何使用HaarCascades,则可以在此链接上获取它。 here