繁体   English   中英

opencv-python对象检测

[英]opencv-python object detection

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

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

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

如果图像将改变其尺寸和方向,则可以使用SIFT或SURF。

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

如果您必须根据对象对一组图像进行分类,例如应检测到所有板球拍,则可以训练许多正图像以告诉计算机该对象的外观,而负图像则可以指示该对象的外观,可以使用haar训练来完成。

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

一种方法是寻找已知的颜色,形状和尺寸。

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

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

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

您最终将得到的实际上是一条“流水线”,该流水线可以采用框架,并寻找适合您设置的条件的形状。 根据您要执行的操作的复杂性(您没有说要查找的内容),这可能会或可能不会奏效,但是我已经成功地使用了它。

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

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

或者,如果你想知道如何使用HaarCascades那么你就可以得到它的这个链接这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM