『QQ:1353814576』

C#使用OpenCVSharp3实现图片马赛克效果


.NET C#使用OpenCVSharp3实现图片马赛克效果

首先Nuget引用开源包(本文使用的是OpenCVSharp3(目前已停止维护)) 如图所示

C#使用OpenCVSharp3实现图片马赛克效果

实现马赛克的代码如下 (网上也挺多)

            string path = System.IO.Path.Combine("d://", "msk.jpg");
            Mat _mat = Cv2.ImRead(path);
            Mat mat = _mat.Clone();
           ///马赛克方块大小 单位 像素
            int msk_size = 10;
            for (int j = 0; j < mat.Height; j++)
            {
                for (int i = 0; i < mat.Width; i++)
                {
                    if (j > 0 && j % msk_size == 0 && i > 0 && i % msk_size == 0)
                    {
                        for (int a = 0; a < msk_size; a++)
                        {
                            for (int b = 0; b < msk_size; b++)
                            {
                                if (j + a < mat.Height && i + b < mat.Width)
                                {
                                    Vec3b vec3B = mat.At<Vec3b>(j, i);
                                    mat.Set<Vec3b>(j + a, i + b, vec3B);
                                }
                            }
                        }
                    }
                }
            }

            Cv2.ImShow("马赛克处理前", _mat);
            Cv2.ImShow("马赛克处理后", mat);
            Cv2.WaitKey();

马赛克效果处理前后对比

C#使用OpenCVSharp3实现图片马赛克效果