C# 使用PaddleSeg人像抠图

本项目是一个基于百度飞桨PaddleSeg项目的人像分割模块而开发的.NET的工具类库。

本项目中PaddleSeg.dll文件是基于开源项目最新发布版本PaddleSeg 2.7PaddleSeg的版本修改而成的C++动态库,基于opencv的x64编译而成的。

PaddleSeg是基于飞桨PaddlePaddle的端到端图像分割套件,内置45+模型算法及140+预训练模型,支持配置化驱动和API调用开发方式,打通数据标注、模型开发、训练、压缩、部署的全流程,提供语义分割、交互式分割、Matting、全景分割四大分割能力,助力算法在医疗、工业、遥感、娱乐等场景落地应用。

本项目只能在X64的CPU上编译和使用,只能在avx指令集上的CPU上使用。

本项目支持飞桨人像抠图的所有模型。PP-MattingV2-512、PP-Matting-512、PP-Matting-1024、PP-HumanMatting、MODNet-MobileNetV2。 默认使用MODNet-MobileNetV2模型。

项目目前支持以下.NET框架,可以说,覆盖范围很广。

1
2
3
net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;

项目开源地址:https://gitee.com/raoyutian/PaddleSegSharp

添加PaddleSegSharp的依赖。

using PaddleSegSharp;
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时有效");

选择一个本地图片,进行抠图。

结果存在C盘下,打开即可看到效果图。

 

posted @   多见多闻  阅读(673)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2022-11-08 C# .NET 支付宝接入
点击右上角即可分享
微信分享提示