Как объединить два изображения с помощью OpenCvSharp4 v4.2 - PullRequest
0 голосов
/ 16 января 2020

Мне нужно создать метод в C#, который будет получать изображение (или путь к нему), размыть его и затем попытаться объединить размытое изображение с оригиналом, используя OpenCvSharp4. Пока что я могу создать размытое изображение просто отлично, но слияние вызывает у меня трудности. Я пробовал несколько примеров кода, найденных в Интернете, но безрезультатно. Есть идеи, как получить объединяющуюся часть?

- спасибо,

  var mat = Cv2.ImRead(OriginalFileName, ImreadModes.Unchanged);
        Cv2.Resize(mat, mat, new Size(933, 934), 0d, 0d, InterpolationFlags.Linear);
        Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2RGB);
        Mat newImage = new Mat();
        Cv2.GaussianBlur(mat, newImage, new Size(67, 67), 0d, 0d, BorderTypes.Default);
        Cv2.CvtColor(newImage, newImage, ColorConversionCodes.BGR2RGB);
        Mat merged = Mat.Ones || Mat.Zeros // HELP NEEDED HERE
        Cv2.Merge(new Mat[] { mat, newImage }, merged);

1 Ответ

0 голосов
/ 17 января 2020

Нашел хороший совет и пример кода: Как объединить два изображения в opencv?

Вот мое окончательное решение:

 var mat = Cv2.ImRead(OriginalFileName, ImreadModes.Unchanged);
        Cv2.Resize(mat, mat, new Size(933, 934), 0d, 0d, InterpolationFlags.Linear);
        Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2RGB);
        Mat newImage = new Mat();
        Cv2.GaussianBlur(mat, newImage, new Size(67, 67), 0d, 0d, BorderTypes.Default);
        Cv2.CvtColor(newImage, newImage, ColorConversionCodes.BGR2RGB);

        //merging
        double alpha = 0; double beta; 
        Mat src1, src2, merge;
        merge = new Mat();
        src1 = mat;
        src2 = newImage;
        beta = (1.0 - alpha);
        Cv2.AddWeighted(src1, alpha, src2, beta, 0.0, merge);
...