Emgu,.FindContours()和CvInvoke.FindContours()之间的区别是什么?

时间:2016-07-27 11:10:39

标签: c# opencv image-processing emgucv

我刚开始学习Emgu和OpenCV。所以这可能是一个愚蠢的问题。当我查看Emgu文档(请参阅链接http://www.emgu.com/wiki/files/3.1.0/document/html/cb24a129-d9ce-57f3-19ad-0eaa27a77317.htm)时,我找不到示例。但我想你以

的形式使用它
CvInvoke.FindContours(...)

但是当我搜索stackoverflow时,我发现这个人只是在他的代码enter link description here的中下部分使用了以下表格

grayImage.FindContours()

然而,当我尝试后期时,Visual studio根本就不接受它。 (即,当我输入grayImage.F时,弹出窗口根本没有FindContours功能)。

我正在使用最新的opencv和emgu。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您使用的是最新版本。

如果您快速查看版本的文档 2.43.1 你可以看到,函数FindContours()已从Image Class中删除,但仍然是CvInvoke类的一部分。

如果你坚持使用看到的语法,你可以添加自己的扩展名:

 public static class Extension
{
    public static VectorOfVectorOfPointF FindContour(this UMat img,Mat hierarchy = null, Emgu.CV.CvEnum.RetrType type = Emgu.CV.CvEnum.RetrType.List,Emgu.CV.CvEnum.ChainApproxMethod method = Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple  )
    {
        VectorOfVectorOfPointF contours = new VectorOfVectorOfPointF();
        CvInvoke.FindContours(img, contours, hierarchy, type, method);
        return contours;
    }

}

这只是c#中的示例扩展名。