2016-05-13 87 views
1

我使用OpenCV 2.4.11 Xamarin.Android與OpenCvBinding。我試圖找到圖像中最大的顏色區域。Imgproc.FindContours返回空輪廓

static public Tuple<Bitmap,double> GetArea(Bitmap srcBitmap) 
    { 
     Mat mat = new Mat(); 
     Mat gray = new Mat(); 
     Mat mat2 = new Mat(); 
     double max = 0; 
     Mat Hierarchy = new Mat(); 
     List<MatOfPoint> contours = new List<MatOfPoint>(); 
     Utils.BitmapToMat(srcBitmap, mat); 

     Imgproc.CvtColor(mat, gray, Imgproc.ColorRgba2gray); 
     Imgproc.AdaptiveThreshold(gray, mat2, 255, Imgproc.AdaptiveThreshGaussianC, Imgproc.ThreshBinaryInv,1111,0);  
     Imgproc.FindContours(mat2, contours, Hierarchy, Imgproc.RetrTree, Imgproc.ChainApproxSimple); 

     foreach (MatOfPoint contour in contours) 
     {  // never goes here 
      if (max < Imgproc.ContourArea(contour)) max = Imgproc.ContourArea(contour); 
     } 
     Utils.MatToBitmap(mat2,srcBitmap); 

     return new Tuple<Bitmap, double>(srcBitmap,max); 
    } 

Input Image

如果我評論與FindContours行了,我會得到一個很好的圖片搜索輪廓。

Threshholded image

FindContours返回正確的圖像(信譽不允許添加其他鏈接),但是(!!)輪廓站在空的列表。所以我無法得到這些結構的區域。 我很樂意提供任何幫助。謝謝!

+0

[看起來不太好,但顯示圖片中的輪廓顯示正確。](http://imgur.com/Mi0qIXw) – SomeShapa

+0

我無法測試它,但您的樣式錯誤使用層級結構爲大寫。 – Murphy4

回答

0

使用IList輪廓= new JavaList();

+0

你可以給這個pease添加一些補充嗎? –