Member 11220943 Ответов: 0

Как использовать cvinvoke. grabcut с маской в C# emgu 3.0


Привет,
Я создаю интерактивный алгоритм Grabcut, который взят из открытого резюме. Я делаю это в c# Emgu 3.0. Я смог нарисовать прямоугольник, чтобы извлечь изображение переднего плана с помощью
приведенный ниже код.

using (Matrix<double> bgdModel = new Matrix<double>(1, 13 * 5))
         using (Matrix<double> fgdModel = new Matrix<double>(1, 13 * 5))
         {
             CvInvoke.GrabCut(original, mask1, new Rectangle(0, 0, original.Width, original.Height), bgdModel, fgdModel, 1, Emgu.CV.CvEnum.GrabcutInitType.InitWithRect);
             CvInvoke.GrabCut(original, mask1, rect, bgdModel, fgdModel, 2, Emgu.CV.CvEnum.GrabcutInitType.Eval);
         }


Теперь следующая часть заключается в том, что я хочу создать интерактивное прикосновение, но не могу найти никаких ссылок на использование метода Grabcut с маской в c#. Может ли кто-нибудь помочь мне?

Спасибо,
Индра

Что я уже пробовал:

Мне удалось успешно нарисовать область маски, а затем передать маску в нижнюю секцию, но она не работает.
using (Matrix<double> bgdModel = new Matrix<double>(1, 13 * 5))
         using (Matrix<double> fgdModel = new Matrix<double>(1, 13 * 5))
         {
             CvInvoke.GrabCut(original, mask1, new Rectangle(0, 0, original.Width, original.Height), bgdModel, fgdModel, 1, Emgu.CV.CvEnum.GrabcutInitType.InitWithRectMask);
             CvInvoke.GrabCut(original, mask1, rect, bgdModel, fgdModel, 2, Emgu.CV.CvEnum.GrabcutInitType.Eval);
         }<pre lang="c#">

Я не могу понять, как передать выбранную область в этом методе.

0 Ответов