如何使用OpenCvSharp4 v4.2合并两个图像

问题描述 投票:0回答:1

我需要在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);
c# image opencvsharp
1个回答
0
投票

在这里找到了一个很好的提示和示例代码:How to merge two images in 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);
© www.soinside.com 2019 - 2024. All rights reserved.