3

我正试图在游戏 Winterbells 中跟随兔子。这是一些截图兔子兔子兔子

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

但我不知道如何找到兔子。我必须使用opencv吗?我使用的唯一模块是 pil 来检测像素的颜色。这似乎是一项容易的任务,但我只是不知道我该怎么做。

4

2 回答 2

14

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

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

在此处输入图像描述

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

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

按下Enter50 次并查看斑点的面积后,您会注意到铃铛的面积在 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

在此处输入图像描述

你的兔子来了

所以总结一下,你的脚本看起来像:

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()
于 2012-12-26T07:03:27.617 回答
0

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

于 2012-12-26T06:59:36.957 回答