Эмгу, в чем разница между.FindContours() и CvInvoke.FindContours()
Я только начал изучать Emgu и OpenCV. Так что это может быть глупый вопрос. Когда я просматриваю документацию Emgu (см. Ссылку http://www.emgu.com/wiki/files/3.1.0/document/html/cb24a129-d9ce-57f3-19ad-0eaa27a77317.htm), я не могу найти пример. Но я полагаю, вы использовали его в форме
CvInvoke.FindContours(...)
Но когда я искал stackru, я обнаружил, что этот человек просто использовал следующую форму в средней нижней части своего кода, введите описание ссылки здесь
grayImage.FindContours()
Однако, когда я попробовал позже, Visual Studio просто не принимает это. (т.е. когда я набрал grayImage.F всплывающее окно просто не имеет функции FindContours).
Я использую последние opencv и emgu. Есть идеи?
1 ответ
Вы используете последнюю версию.
Если вы быстро изучите документы версий 2.4, 3.1, вы увидите, что функция FindContours() была удалена из класса изображений, но все еще является частью класса 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# ..