Считать локально сохраненное изображение в качестве фонового изображения для вычитания - PullRequest
0 голосов
/ 10 июля 2020

Я использую Emgu.CV и планирую использовать вычитание фона. Я хочу сделать что-то довольно простое и прочитать два фоновых изображения с моего локального диска и использовать одно из них в качестве фонового изображения, а другое в качестве наложения для сравнения с / маской.

У меня нет Однако зашел далеко, потому что подпись метода сильно отличается от простого приема файла. Я предполагаю, что мне не хватает преобразования из File.Read в IInputArray


IBackgroundSubtractor backgroundSubtractor = new BackgroundSubtractorMOG2();

IInputArray inputImage; // how do I create an instance of an InputArray from a local file?
IOutputArray mask;

backgroundSubtractor.Apply(imputImage, mask);

Как мне go из файла в C:\<somepath>\someimage1.png в форматы IInputArray, IOutputArray ниже?

1 Ответ

1 голос
/ 10 июля 2020

EmguCv предлагает разные методы для загрузки изображений из файла (см. V1 и V2 ниже). Для маски вам просто нужно определить новый объект Mat, и он будет выделен и заполнен автоматически при вызове backgroundSubtractor.Apply(input1, mask);

    //V1 load image
    var input1 = new Mat(@"C:\<somepath>\someimage1.png");
    
    //V2 load image
    Mat input2 = CvInvoke.Imread(@"C:\<somepath>\someimage1.png", ImreadModes.AnyColor);
    
    var mask = new Mat();
    IBackgroundSubtractor backgroundSubtractor = new BackgroundSubtractorMOG2();
    backgroundSubtractor.Apply(input1, mask);

Класс Mat реализует IInputtArray, а также IOutputArray.

...