2013-03-02 52 views
0

我正在處理顏色跟蹤.. 和我正在專門跟蹤一個橙色的球,一個籃球球也許,以及對身體的kinect,我正在製作一個罰球投籃指南。 這裏是我的情況下emguCV得到最大的斑點

我已經閾值處理我的形象,侵蝕它來消除噪聲和其它無關緊要的對象(非球),然後擴張幾次強調球.. 等我來一個最終的二進制圖像 - 我已經成功地隔離了球..還有其他的斑點..(更小的斑點不是球)..我如何獲得最大的斑點(球),並把一個邊界框?

我試過hough圈btw,但是這是非常慢,..謝謝!一些代碼將是有益的

+0

你可以發表一些代碼嗎?這將有所幫助! – dom 2013-03-03 11:59:08

回答

2

這是我用來獲取圖像中的最大BLOB代碼:

public static Blob FindLargestObject(Image<Gray, byte> block, Rectangle rectangle) 
    { 
     Image<Gray, byte> mask = block.CopyBlank(); 

     Contour<Point> largestContour = null; 
     double largestarea = 0; 

     for (var contours = block.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, 
      RETR_TYPE.CV_RETR_EXTERNAL); contours != null; contours = contours.HNext) 
     { 
      if (contours.Area > largestarea) 
      { 
       largestarea = contours.Area; 
       largestContour = contours; 
      } 
     } 

     // fill the largest contour 
     mask.Draw(largestContour, new Gray(255), -1); 

     return new Blob(mask, largestContour, rectangle); 
    } 

爲BLOB:

public class Blob 
{ 
    Image<Gray,byte> Mask{ get; set; } 
    Contour<Point> Contour { get; set; } 
    Rectangle Rectangle { get; set; } 
} 

團塊將包含所有的信息,你想要得到。

+0

非常感謝你!:D – muffin 2013-03-04 15:45:01

+0

歡迎...很高興能有所幫助。 – Oliver 2013-03-04 16:33:05