2016-01-06 101 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