C#使用OpenCVSharp3实现图片马赛克效果
.NET C#使用OpenCVSharp3实现图片马赛克效果
首先Nuget引用开源包(本文使用的是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();
马赛克效果处理前后对比