2012-12-26 52 views
3

我想跟着兔子在遊戲中的winterbells。下面是一些截圖rabbitrabbitrabbit我如何找到兔子?

本來我以爲我可以遵循的顏色只兔子了,但似乎所有對象(即鍾和鴿子)具有相同的顏色。我可以通過只搜索白色來檢測所有對象(查看結果)results

但我找不出如何找到兔子。我必須使用opencv嗎?我使用的唯一模塊是pil檢測像素的顏色。這似乎是一個容易的任務,但我不明白我能做到這一點。

+0

使用SimpleCV。與其合作會更容易。我只是使用斑點檢測來找到白色斑點。 – Blender

+0

我會檢查simplecv,但即使與斑點檢測如何區分兔子和鐘聲? – bab

回答

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倍,看斑點的面積後,您會發現,鐘有630之間的區域和660這隻鳥的540的面積和兔子有大約750

的區域現在,它只是一個過濾掉斑點的事你不想:

>>> 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() 
0

我想,你可以嘗試使用svm來分類兔子和鍾。首先,你可以檢測所有對象,然後用svm對它們進行分類。