2016-01-06 56 views
1

这里需要一些指导,我试图识别图像中的不同对象并获取它们的边界框。图像中的对象检测

图像总是干净透明的背景和分离的物体。

example image

例如上述图像中有3个对象。任何想法或任何工具都会有所帮助。

+2

A [链接](http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html),让你开始.. – RyanL

+0

你不能得到边界框使用它,但Clarifai的API可能能够帮助您实际识别过程:clarifai.com –

回答

0

由于对象是在这样的背景下,简单的连接组件标签会给你第一个基本的答案。但是,找出哪些对象重叠会更加复杂。

你有关于要检测的物体的任何信息?

+0

谢谢,连接组件标签看起来像我一直在寻找的东西。我不需要识别重叠的对象,如果它们算作一个对象就没关系。 – amitdar

+0

然后,不要做任何更复杂的事情。连接组件标签将完全符合您的需求。每个对象都有一个不同的值。 – FiReTiTi

0

您可以使用模板匹配来查找花朵(作为模板)和整张图片的花朵和右上角对象(假设它们相似)。

有模板检测here的例子:(其中reference.png是原始图像,而template.png是你要检测的对象,像花)

以下是图像花(重命名为template.png):

enter image description here

运行与整个图像reference.png模板匹配的代码,我们可以发现花(绿色矩形高亮显示):

enter image description here

虽然代码没有执行边界框,您可以使用boundingRect()绘制最小外接矩形(给出一个轮廓)。

轮廓可以是这样的:

  1. 设置一个ROI(感兴趣的区域)内的每一个绿框。
  2. 查找粉红色物体的轮廓。
  3. 在找到的轮廓上使用boundingRect,并在花的周围绘制最小矩形。
+0

感谢您的详细解答。在我的情况下,我没有任何特定的模板可以使用,示例图像实际上证明有3个对象,其中2个完全不同,但它们都可以不同。 – amitdar

相关问题