我如何找到兔子?

时间:2012-12-26 06:47:27

标签: python opencv python-imaging-library object-detection

我试图在游戏winterbells中跟随兔子。以下是一些屏幕截图rabbit rabbit rabbit

最初我认为我可以追随只有兔子的颜色,但似乎所有的物体(即铃铛和鸽子)都有相同的颜色。我可以通过搜索白色来检测所有对象(参见结果)results

但我无法弄清楚如何找到兔子。我必须使用opencv吗?我用过的唯一模块就是检测像素的颜色。这似乎是一项简单的任务,但我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:14)

最简单的方法是按区域对形状进行分类。这是SimpleCV的一个解决方案:

>>> from SimpleCV import *
>>> image = Image('image.png')
>>> binarized = image.binarize(220).invert()
>>> binarized.show()

enter image description here

现在,这更容易使用。您可以使用简单的斑点检测来过滤掉铃铛和鸟类:

>>> blobs = binarized.findBlobs()
>>> for blob in blobs:
...    blob.draw()
...    print blob
...    binarized.show()
...    raw_input()

按下输入 50次并查看blob的区域后,你会注意到铃声的面积在630到660之间。这只鸟的面积为540,兔子的面积为面积约750。

现在,只需要过滤掉你不想要的blob:

>>> rabbit = next(b for b in blobs if abs(750 - b.area()) < 60)
>>> rabbit.draw()
>>> binarized.show()
>>> rabbit
    SimpleCV.Features.Blob.Blob object at (381, 445) with area 754

enter image description here

有你的兔子。

所以要把事情搞砸,你的脚本应该是这样的:

from SimpleCV import *

image = Image('image.png')
binarized = image.binarize(220).invert()
blobs = binarized.findBlobs()
rabbit = next(b for b in blobs if abs(750 - b.area()) < 60)

print rabbit.coordinates()

答案 1 :(得分:0)

我认为,你可以尝试使用svm来分类兔子和铃铛。首先,您可以检测所有对象,然后使用svm对其进行分类。