C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2
目录
效果
项目
代码
下载
C# OpenVINO 百度PaddleSeg实时人像抠图PP-MattingV2
效果


项目

代码
using OpenCvSharp;
using Sdcb.OpenVINO;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;namespace C__OpenVINO_Demo
{public partial class Form1 : Form{Bitmap bmp;string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";string img = "";string model_path;CompiledModel cm;InferRequest ir;StringBuilder sb = new StringBuilder();public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){model_path = "models/ppmattingv2-stdc1-human_512/model.pdmodel";Model rawModel = OVCore.Shared.ReadModel(model_path);var ad = OVCore.Shared.AvailableDevices;Console.WriteLine("可用设备");foreach (var item in ad){Console.WriteLine(item);}cm = OVCore.Shared.CompileModel(rawModel, "CPU");ir = cm.CreateInferRequest();img = "1.jpg";bmp = new Bitmap(img);pictureBox1.Image = new Bitmap(img);}private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox1.Image = null;img = ofd.FileName;bmp = new Bitmap(img);pictureBox1.Image = new Bitmap(img);textBox1.Text = "";}private void button2_Click(object sender, EventArgs e){if (img == "") { return; }textBox1.Text = "";sb.Clear();pictureBox2.Image = null;Application.DoEvents();Mat src = new Mat(img);Stopwatch stopwatch = new Stopwatch();Mat resize_image = new Mat();Cv2.Resize(src, resize_image, new OpenCvSharp.Size(512, 512));Mat normalized = Common.Normalize(resize_image);float[] input_tensor_data = Common.ExtractMat(normalized);Tensor input_img = Tensor.FromArray(input_tensor_data, new Shape(1, 3, 512, 512));ir.Inputs[0] = input_img;double preprocessTime = stopwatch.Elapsed.TotalMilliseconds;stopwatch.Restart();ir.Run();double inferTime = stopwatch.Elapsed.TotalMilliseconds;stopwatch.Restart();Tensor output_0 = ir.Outputs[0];float[] mask = output_0.GetData<float>().ToArray();Mat mask_mat = new Mat(512, 512, MatType.CV_32FC1, mask);mask_mat *= 255;mask_mat.ConvertTo(mask_mat, MatType.CV_8UC1);Cv2.Resize(mask_mat, mask_mat, new OpenCvSharp.Size(512, 512));double postprocessTime = stopwatch.Elapsed.TotalMilliseconds;stopwatch.Stop();double totalTime = preprocessTime + inferTime + postprocessTime;sb.AppendLine($"Preprocess: {preprocessTime:F2}ms");sb.AppendLine($"Infer: {inferTime:F2}ms");sb.AppendLine($"Postprocess: {postprocessTime:F2}ms");sb.AppendLine($"Total: {totalTime:F2}ms");textBox1.Text = sb.ToString();Cv2.ImShow("mask", mask_mat);//string s = mask_mat.Dump();Cv2.Merge(new Mat[] { mask_mat, mask_mat, mask_mat }, mask_mat);Mat dst = new Mat();Cv2.BitwiseAnd(resize_image, mask_mat, dst);//或者 dst = mask_mat & resize_image;//string s2 = dst.Dump();//透明图处理//B,G,R,A B,G,R -> 0 黑色 255 白色//A为透明度 -> 255为不透明,0为全透。//Cv2.ImShow("dst", dst);var srcBgr = Cv2.Split(dst);var alphaBgr = Cv2.Split(mask_mat);var bgra = new[] { srcBgr[0], srcBgr[1], srcBgr[2], alphaBgr[0] };Cv2.Merge(bgra, dst);//Cv2.ImShow("dst_alpha_0", dst);Cv2.ImWrite("1.png", dst);//string s3 = dst.Dump();pictureBox2.Image = new System.Drawing.Bitmap(dst.ToMemoryStream());}}}
下载
源码下载
相关文章:
C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2
目录 效果 项目 代码 下载 C# OpenVINO 百度PaddleSeg实时人像抠图PP-MattingV2 效果 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Diagnostics; using System.Drawing; using System.Security.Cryptography; using System.Text; us…...
【Android 11】AOSP Settings WIFI随机MAC地址功能
AOSP Settings WIFI随机MAC地址功能 背景 最近客户提出了想要实现随机WIFIMAC地址的功能(我们默认WIFI的MAC地址是固定的)。网上搜到了一篇不错的文章,本次改动也是基于这个来写的。 由于客户指定使用的settings是AOSP的,所以在…...
dmrman备份还原
脱机还原工具-dmrman 前言 根据达梦官网文档整理 一、概述 DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。 指定语句 $ DMRMAN RMAN>BACKUP DATABASE/dmdata/data/DAMENG/dm.ini;指定脚本 创建一个名为 cmd_file.txt 的文件&#x…...
网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)
这个错误通常表现为"403 Forbidden"或"HTTP Status 403",它指的是访问资源被服务器理解但拒绝授权。换句话说,服务器可以理解你请求看到的页面,但它拒绝给你权限。 也就是说很可能测试给定的参数有问题,后端…...
单细胞多组学整合与对齐的计算方法
Computational Methods for Single-cell Multi-omics Integration and Alignment Bioinformatics-2022-密西根大学 关键词:单细胞;多组学;机器学习;无监督学习;集成 摘要 最近发展起来的生成单细胞基因组数据的技术在生物学领域产生了革命性的影响。多组学测定提…...
33.openeuler OECA认证模拟题16
一 、选择题 1.如何查看系统支持的 shell? A、cat /etc/passwd B、cat /etc/shells C、echo SSHELL D、echo $0 答案 :B 2.下列哪项不是 shell的功能? A 、 用户界面,提供用户与内核交互接口 B 、 命令解释器 C 、提供编译环境 D 、 提供各种管理工具,…...
javaScript数组去重的几种实现方式——适用非引用数据去重
最传统的使用循环遍历 //最传统的使用循环遍历 function getUnique(arr) {let newArr [];for (let i 0; i < arr.length; i) {for (let j i 1; j < arr.length; j) {if (arr[i] arr[j]) {i; //相同丢掉前面的元素}}newArr.push(arr[i]);}return newArr; } 利用Set实…...
Nexus Repository Manager
Nexus Repository Manager https://s01.oss.sonatype.org/#welcome https://mvnrepository.com/-CSDN博客...
Python世界之运算符
一、算术运算符 以下假设变量: a10,b20: 运算符 描述 实例 加 - 两个对象相加 a b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结…...
蓝桥杯倒计时47天!DFS基础——图的遍历
倒计时47天! 深度优先搜索——DFS 温馨提示:学习dfs之前最好先了解一下递归的思想。 DFS基础——图的遍历 仙境诅咒 问题描述 在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有自己独特的修炼之道…...
体验LobeChat搭建私人聊天应用
LobeChat是什么 LobeChat 是开源的高性能聊天机器人框架,支持语音合成、多模态、可扩展的(Function Call)插件系统。支持一键免费部署私人 ChatGPT/LLM 网页应用程序。 地址:https://github.com/lobehub/lobe-chat 为什么要用Lobe…...
ClickHouse 指南(三)最佳实践 -- 主键稀疏索引
在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中,我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…...
【Nginx】Nginx配置反向代理 和 https
nginx.conf配置 进入linux /etc/nginx/ 打开nginx.conf 进行以下配置 http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {#监听443端口listen 443 ssl;#你的域名server_name huiblog.top;#ssl证书的pe…...
ChatGPT第七讲
ChatGPT为什么会被热炒? 2023年上半年,ChatGPT引起了广泛的热议,对于ChatGPT有多热,不需要我重复了,你可能在网上看到了很多报道,标题如《ChatGPT揭开AI战幔:杀死黄页一样摧毁Google?…...
Chapter 2 of Effective C++ (构造/析构/赋值运算)
条款06:了解C默默编写并调用哪些函数 Know what functions C silently writes and calls 编译器会为空类生成一个copy构造函数、copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,它也会生成一个默认构造函数。 (对C1…...
Android学习笔记 service启动方式
在Android系统中,Service的启动方式主要有两种: ## 1. startService 这种方式用于启动一个服务执行后台任务,不进行通信。当你调用startService()方法启动服务后,服务会一直无限期运行下去,只有在外部调用了stopServi…...
Redis 工具类 与 Redis 布隆过滤器
Redis 工具类 1. 核心依赖 <!--redis--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>com.google.guava…...
自定义el-upload 上传文件
前言 最近在做一个文件上传的功能,后端接口写好了、发现前端上传文件的页面不会写……(我很笨的)然后我就找啊找发现element有个组件是<el-upload/>能直接上传文件。我就想直接用拿来改改改成自己想要的,可是就是这样我花了…...
LeetCode69. x 的平方根(C++)
LeetCode69. x 的平方根 题目链接代码 题目链接 https://leetcode.cn/problems/sqrtx/description/ 代码 class Solution { public:int mySqrt(int x) {int right x, left 0, ans -1;while(left < right){long long mid left (right - left) / 2;if(mid * mid <…...
[c++] 单例模式 + cyberrt TimingWheel 单例分析
单例模式要求一个类在一个进程中只能创建一个对象。比如 cyberrt 中的 TimingWheel 类就是单例模式,这个类管理着一个进程内的所有定时器,只需要一个对象就可以。 单例模式的实现有两种方式,懒汉式和饿汉式。懒汉式,当第一次使用…...
OpenRocket:从设计到飞行的全链路火箭仿真实战指南
OpenRocket:从设计到飞行的全链路火箭仿真实战指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 火箭爱好者与工程师的终极工具:…...
链式前向星:高效图存储的进阶指南
1. 为什么需要链式前向星? 当你第一次接触图论算法时,可能会被邻接矩阵和邻接表搞得晕头转向。我刚开始学图论的时候,就经常在这两种存储方式之间纠结。邻接矩阵写起来简单,一个二维数组就能搞定,但当节点数超过10000时…...
Cherry Studio终极模型集成指南:支持DeepSeek-R1等主流LLM的桌面AI神器
Cherry Studio终极模型集成指南:支持DeepSeek-R1等主流LLM的桌面AI神器 【免费下载链接】cherry-studio 🍒 Cherry Studio is a desktop client that supports for multiple LLM providers. Support deepseek-r1 项目地址: https://gitcode.com/GitHub…...
专访越擎科技创始人: 外骨骼的设计与仿真该如何入门
具身智能机器人领域的技术创新如火如荼,从轮式机器人,人形机器人,四足机器狗等不一而足。而从分类来看,外骨骼机器人作为增强人的能力的典型应用,不仅在医疗领域发挥重要作用,在工业应用等场景中也大大的增…...
QQ音乐加密音频终极解密指南:qmcdump完整教程与实战应用
QQ音乐加密音频终极解密指南:qmcdump完整教程与实战应用 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是…...
人工智能高质量数据集概述
人工智能高质量数据集,是指经过标准化采集、清洗、标注、质检、脱敏及结构化处理,能够直接用于人工智能模型开发、训练与优化,且能有效提升模型性能、保障模型泛化能力,具备高可用性、高一致性、高安全性和高适配性的结构化或非结…...
2.4 微积分与自动微分1
微积分 导数与微分 操作之前记得检查版本确保 matplotlib 正确安装:在d2l环境下输入pip install matplotlib (windows版) 重启jupyter就可以运行了(如果还是不行自行移步ai) 1.我们通过简单的微分方式得到我们需要的极限 2.之后我们再试着…...
从数组到哈夫曼树:用Python代码图解软考数据结构核心算法
从数组到哈夫曼树:Python实战软考核心数据结构 1. 线性结构的Python实现 1.1 顺序栈与队列的实现 Python的列表(list)天然适合实现顺序存储结构。我们先来看栈的实现: class ArrayStack:def __init__(self, capacity10):self._items []self._capacity …...
SGP30传感器数据不准?可能是你的I2C时序和初始化搞错了(避坑指南)
SGP30传感器数据异常排查指南:从硬件设计到软件调试的完整解决方案 1. 硬件设计中的常见陷阱与优化方案 SGP30作为一款高精度环境传感器,其硬件设计细节直接影响数据可靠性。许多开发者遇到的首要问题往往源于电路设计阶段被忽视的关键参数。 电源稳定性…...
Llama-3.2V-11B-cot在智能教育中的应用:数学题配图逻辑漏洞识别实战
Llama-3.2V-11B-cot在智能教育中的应用:数学题配图逻辑漏洞识别实战 1. 引言:当AI遇见数学教育 数学教材和习题集中的配图错误是一个长期困扰教育行业的难题。据统计,约15%的数学教材配图存在不同程度的逻辑漏洞或表达偏差,这些…...
