墨扬 發表於 2022-12-14 21:59:00

如何5分钟上手使用PaddleSeg人像抠图

<p align="left"><img src="https://img2023.cnblogs.com/blog/2709606/202212/2709606-20221214215951666-1741928399.jpg"></p>
<p>&nbsp;</p>
<p align="left">随便打开一个Microsoft Visual Studio,新建一个WinForms项目,从下面列表中随便选择一个NET框架。</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;</pre>
</div>
<p align="left">创建完窗口后,切换到【程序包管理控制台】,输入下面命令并回车:</p>
<p align="left">Install-Package PaddleSegSharp -Version 1.0.0</p>
<p align="left">完成<strong>PaddleSegSharp</strong>的依赖包安装。</p>
<p align="left">在窗口界面拖放一个按钮,并双击,在按钮的点击事件中,输入以下代码:</p>
<p align="left">添加命名空间:</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">using PaddleSegSharp;
</pre>
</div>
<p>&nbsp;</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
            if (ofd.ShowDialog() != DialogResult.OK) return;
            string modelPath = null;
            //参数
            MattingParameter parameter = new MattingParameter();
            //初始化引擎
            PaddleSegMattingEngine engine = new PaddleSegMattingEngine();
            parameter.outbgfile = false;//是否 输出黑白前后背景图,当为true,输出路径为seg第三个参数。
            parameter.bgtransparent = false;//是否背景透明,当为true时,Setbackground,SetbackgroundFile都无效。                        
            engine.Init(modelPath, parameter); //初始化引擎   
            engine.Setbackground(45, 145, 255); //设置背景颜色
            engine.SetbackgroundFile("给定背景图的路径");//与Setbackground互斥,SetbackgroundFile优先
            string outfile = "C:\\" + Guid.NewGuid().ToString() + ".bmp";//分割后的文件
            engine.Seg(ofd.FileName, outfile, "输出黑白前后背景图路径,parameter.outbgfile为true时有效");
</pre>
</div>
<p>  </p>
<p align="left">然后按F5运行,点击按钮,选择一个本地图片,进行抠图。</p>
<p align="left">结果存在C盘下,打开即可看到效果图。</p>
<p align="left"><img src="https://img2023.cnblogs.com/blog/2709606/202212/2709606-20221214215809823-1158519661.gif"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="left"><img src="https://img2023.cnblogs.com/blog/2709606/202212/2709606-20221214215748618-773383131.jpg"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2023.cnblogs.com/blog/2709606/202212/2709606-20221214215756174-842590316.jpg"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2023.cnblogs.com/blog/2709606/202212/2709606-20221214215800617-1448497683.jpg"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;项目简介:</p>
<p>本项目是一个基于百度飞桨PaddleSeg项目的人像分割模块而开发的.NET的工具类库。</p>
<p>本项目中PaddleSeg.dll文件是基于开源项目最新发布版本PaddleSeg 2.7PaddleSeg的版本修改而成的C++动态库,基于opencv的x64编译而成的。</p>
<p>PaddleSeg是基于飞桨PaddlePaddle的端到端图像分割套件,内置45+模型算法及140+预训练模型,支持配置化驱动和API调用开发方式,打通数据标注、模型开发、训练、压缩、部署的全流程,提供语义分割、交互式分割、Matting、全景分割四大分割能力,助力算法在医疗、工业、遥感、娱乐等场景落地应用。</p>
<p>本项目只能在X64的CPU上编译和使用,只能在avx指令集上的CPU上使用。</p>
<p>本项目支持飞桨人像抠图的所有模型。PP-MattingV2-512、PP-Matting-512、PP-Matting-1024、PP-HumanMatting、MODNet-MobileNetV2。 默认使用MODNet-MobileNetV2模型。</p>
<p>项目目前支持以下.NET框架,可以说,覆盖范围很广。</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;
</pre>
</div>
<p>  </p>
<p>项目开源地址:https://gitee.com/raoyutian/PaddleSegSharp</p>
<p>&nbsp;</p>
<p>5分钟的时间,你Get到了吗?</p>
<h3>欢迎加入QQ交流群:818391797进行技术交流</h3>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/raoyutian/p/16983749.html
頁: [1]
查看完整版本: 如何5分钟上手使用PaddleSeg人像抠图