2012-02-18 47 views
1

我試圖編譯這段代碼(最後一個): http://www.aforgenet.com/framework/features/blobs_processing.htmlC#和AForge - 使用未分配的局部變量edgePoints的

但它拋出:使用未分配的局部變量的「edgePoints」 ..

這裏是代碼:

 BlobCounter blobCounter = new BlobCounter(); 
     blobCounter.ProcessImage(image23); 
     Blob[] blobs = blobCounter.GetObjectsInformation(); 
     GrahamConvexHull hullFinder = new GrahamConvexHull(); 
     BitmapData data = image23.LockBits(new Rectangle(0, 0, image23.Width, image23.Height), ImageLockMode.ReadWrite, image23.PixelFormat); 
     foreach (Blob blob in blobs) 
     { 
      List<IntPoint> leftPoints, rightPoints, edgePoints; 
      blobCounter.GetBlobsLeftAndRightEdges(blob, out leftPoints, out rightPoints); 
      edgePoints.AddRange(leftPoints); 
      edgePoints.AddRange(rightPoints); 
      List<IntPoint> hull = hullFinder.FindHull(edgePoints); 
      Drawing.Polygon(data, hull, Color.Red); 
     } 
     image23.UnlockBits(data); 

這是他有問題的行:

  edgePoints.AddRange(leftPoints); 

我綁分配null以edgePoints但它失敗:

List<IntPoint> leftPoints, rightPoints, edgePoints= null; 

什麼問題?我沒有修改源代碼,這樣就可以工作了..

+0

該代碼確實是錯誤的,也許應該告訴網站的所有者。 – svick 2012-02-18 10:04:31

回答

1

您需要,以及 - 一個值分配給它:

List<IntPoint> leftPoints, rightPoints, edgePoints; 
edgePoints = new List<IntPoint>(); 

在打電話的方法在該實例上。

leftPointsrightPoints可能是由

blobCounter.GetBlobsLeftAndRightEdges(blob, out leftPoints, out rightPoints); 

調用(注意out關鍵字)初始化,但edgePoints是不是 - 你需要做的是自己。

+0

感謝它的工作!雖然奇怪的是開發者把不可編譯的代碼 – Alex 2012-02-18 10:03:49

+0

@Alex:這確實很奇怪。 – 2012-02-18 10:05:22

+0

任何機會你可以幫我解決Blob檢測問題,當我試圖檢測字符 - 「我」被檢測爲兩個對象 - 「我」和「點」 – Alex 2012-02-18 10:07:20