为什么Opencv Findcontour在Emgu c#中表现不同?

时间:2014-06-25 06:58:14

标签: c# emgucv

您好,在opencv c +方法Findcontours中返回数组层次结构并获取孔的边界我可以获得层次结构。 我怎样才能在emgu cv中获得这些界限请任何帮助? 我怎样才能在emgu cv中找到漏洞?

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码获取Emgucv中的Contour层次结构。

Image<Bgr, byte> Img_Result_Bgr = Img_Source_Bgr.Copy();
Image<Gray, byte> Img_Org_Gray = Img_Source_Bgr.Convert<Gray, byte>();
Image<Gray, byte> Img_CannyEdge_Gray = new Image<Gray, byte>(Img_Source_Bgr.Width,Img_Source_Bgr.Height);

Img_CannyEdge_Gray = Img_Org_Gray.Canny(10, 50);
Img_Org_Gray.Dispose();

Random Rnd = new Random();

#region Finding Contours
using (MemStorage storage = new MemStorage()) //allocate storage for contour approximation
    for (Contour<Point> contours = Img_CannyEdge_Gray.FindContours(); contours != null; contours = contours.HNext)
    {
        Contour<Point> currentContour = contours.ApproxPoly(contours.Perimeter * 0.05, storage);//if you want to Approximate the contours into a polygon play with this function().

        if (contours.Area > 100) //only consider contours with area greater than 100
        {
            Img_Result_Bgr.Draw(contours, new Bgr(Rnd.Next(255),Rnd.Next(255),Rnd.Next(255)), 2);
        }
    }
#endregion
Img_CannyEdge_Gray.Dispose();

imageBox1.Image = Img_Result_Bgr; 

如需进一步参考,请使用此Online Tutor! 这是此代码的输出。 http://s18.postimg.org/511xwpm15/Forum_Contour.jpg