C# OpenVinoSharp PP-TinyPose 人体姿态识别

news2024/11/27 2:44:47

效果

项目

部分代码

using OpenCvSharp;
using OpenCvSharp.Extensions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace OpenVinoSharp_PP_TinyPose人体姿态识别
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
        string image_path = "";
        String startupPath;
        DateTime dt1 = DateTime.Now;
        DateTime dt2 = DateTime.Now;
        // 行人检测模型
        string mode_path_det;
        // 关键点检测模型
        string mode_path_pose;
        // 设备名称
        string device_name;
        //行人区域检测
        PicoDet pico_det;
        //人体姿势检测
        PPTinyPose tiny_pose;
        Mat image;

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fileFilter;
            if (ofd.ShowDialog() != DialogResult.OK) return;

            pictureBox1.Image = null;

            image_path = ofd.FileName;
            pictureBox1.Image = new Bitmap(image_path);
            textBox1.Text = "";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            startupPath = Application.StartupPath;

            //推理模型路径中不能不含中文,否则会报错
            mode_path_det = Application.StartupPath + @"\TinyPoseModel\picodet_v2_s_320_pedestrian\ir\picodet_s_320_lcnet_pedestrian.xml";
            mode_path_pose = Application.StartupPath + @"\TinyPoseModel\tinypose_256_192\tinypose_256_192.onnx";

            // 设备名称
            device_name = "CPU";
            //行人区域检测
            pico_det = new PicoDet(mode_path_det, device_name);
            //人体姿势检测
            tiny_pose = new PPTinyPose(mode_path_pose, device_name);
        }


        private void button1_Click(object sender, EventArgs e)
        {
            tiny_pose_image();
        }


        public void tiny_pose_image()
        {
            if (image_path == "")
            {
                return;
            }

            image = Cv2.ImRead(image_path);

            OpenCvSharp.Size size_det = new OpenCvSharp.Size(320, 320);
            pico_det.set_shape(size_det, 2125);

            dt1 = DateTime.Now;
            List<Rect> result_rect = pico_det.predict(image);

            //人体姿势检测
            OpenCvSharp.Size size_pose = new OpenCvSharp.Size(256, 192);
            tiny_pose.set_shape(size_pose);

            List<Rect> point_rects;
            List<Mat> person_rois = tiny_pose.get_point_roi(image, result_rect, out point_rects);

            for (int p = 0; p < person_rois.Count; p++)
            {
                // 关键点识别
                float[,] person_point = tiny_pose.predict(person_rois[p]);
                tiny_pose.draw_poses(person_point, point_rects[p], ref image);
            }
            dt2 = DateTime.Now;

            for (int i = 0; i < result_rect.Count; i++)
            {
                Cv2.Rectangle(image, result_rect[i], new Scalar(255, 0, 0), 2);
            }
            pictureBox2.Image = BitmapConverter.ToBitmap(image);
            textBox1.Text = "耗时:" + (dt2 - dt1).TotalMilliseconds + "ms";
        }
    }
}

exe程序下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码随想录day24】不同的二叉搜索树

题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xf…

TOWE模块化积木式定制PDU的应用优势

随着计算机网络技术发展&#xff0c;服务器、交换机、各种电子设备等关键设备的需求也日益增加&#xff0c;其承担的业务越来越关键&#xff0c;对设备所处的环境&#xff08;如机房、机柜等&#xff09;要求也越高&#xff0c;所有参与关键设备运行的设施都必须具有高可靠性与…

给苹果手机相册上锁,有3种方法!

手机跟个人的联系越来越密切&#xff0c;总有些不想让别人看到的图片。如果你使用的恰好是苹果手机&#xff0c;想要隐藏相册里的图片&#xff0c;要怎么做&#xff1f;本篇教大家3个方法。 方法1 将iOS更新至16.0版本&#xff0c;打开苹果手机的【设置】&#xff0c;点击【照…

Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装

Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装 目录 Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装 一、简单介绍 二、ControlNet 插件下载安装 三、ControlNet 插件模型下载安装 四、ControlNet 插件其他的下载安装方式 五、Co…

原来Linux这么牛:称霸全球超级电脑 500 强!

还记得之前《全球超级电脑 500 强&#xff0c;中国拿走冠亚军》新闻&#xff1f;虽然昔日超级电脑强权的美国在超级计算机竞赛中落后&#xff0c;但不管哪国打造的超级电脑&#xff0c;还有一件事情值得留意喔──几乎全部都是执行以 Linux 为基础的操作系统&#xff08;注&…

视频号小店怎么进优选联盟?聊下视频号店铺的选品细节,建议收藏

我是王路飞。 视频号小店可能还有很多人不太了解&#xff0c;但是你要知道&#xff0c;红利与机会从来不会消失。 它只会悄悄的转移&#xff0c;转移到你的认知以外&#xff0c;转移到那些新的平台&#xff0c;转移到那些被人忽略的事情里面。 而视频号小店就是目前除了抖音…

【PowerQuery】连接组的复制与粘贴

在实际的应用场景中&#xff0c;单一连接的场景非常少见。通常存在着两个或者两个以上的PowerQuery数据源。在这类场景下一个一个的复制数据源效率非常低下&#xff0c;是否存在更加有效率的数据源复制方式呢&#xff1f;接下来分享的连接组功能就是这样的概念。在PowerQuery中…

动手实践:从栈帧看字节码是如何在 JVM 中进行流转的

Java全能学习面试指南&#xff1a;https://www.javaxiaobear.cn/ 前面我们提到&#xff0c;类的初始化发生在类加载阶段&#xff0c;那对象都有哪些创建方式呢&#xff1f;除了我们常用的 new&#xff0c;还有下面这些方式&#xff1a; 使用 Class 的 newInstance 方法。使用…

【C++】—— 特殊类设计

目录 序言 &#xff08;一&#xff09;设计一个不能被拷贝的类 &#xff08;二&#xff09;设计一个只能在堆上创建对象的类 &#xff08;三&#xff09;设计一个只能在栈上创建对象的类 &#xff08;四&#xff09;设计一个不能被继承的类 总结 序言 特殊类设计是指在面…

AR产业变革中的“关键先生”和“关键力量”

今年6月的WWDC大会上&#xff0c;苹果发布了头显产品Vision Pro&#xff0c;苹果CEO库克形容它&#xff1a; 开启了空间计算时代。 AR产业曾红极一时&#xff0c;但因为一些技术硬伤又减弱了声量&#xff0c;整个产业在起伏中前行。必须承认&#xff0c;这次苹果发布Vision P…

百度文心一言可以接入微信小程序啦!

文心一言(英文名:ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感 …

python学习之【深拷贝】

#我的编程语言学习笔记# 前言 上一篇文章python学习之【浅拷贝】 学习了python中的浅拷贝相关内容&#xff0c;这篇文章接着学习深拷贝。 简单回顾 浅拷贝只拷贝浅层元素&#xff0c;深层元素的内存地址不改变 &#xff1b;当对拷贝产生的新的对象的浅层元素进行更改时&…

擎创技术流 | 深入浅出运维可观测工具(三):eBPF如何兼容多架构模式性能管理

嗨~又见面了大家&#xff01; 之前给大家分享过2篇eBPF技术干货&#xff0c;后台收到的反馈还挺好的&#xff0c;以至于总有朋友过来催更这一系列&#xff0c;这不第3篇在大家的千呼万唤下终于出来了。 新来的朋友点这里&#xff0c;键回看eBPF精彩技术贴&#xff0c;别忘了随…

Vue2安装vuex和vue-router报错处理

Vue2安装vuex和vue-router报错处理 Vue2.6安装VuexVue2.6安装vue-router Vue2.6安装Vuex 报错信息 处理方法 #查看vuex版本 npm view vuex versions --json #安装合适版本 npm install vuex3.6.2 --saveVue2.6安装vue-router 报错信息 处理方法 #查看vue-router版本 npm…

2009-2022年商业银行竞争度数据(勒纳指数)(含原始数据和计算代码 dofile+结果)

2009-2022年商业银行竞争度数据&#xff08;勒纳指数&#xff09;&#xff08;含原始数据和计算代码 dofile结果&#xff09; 1、时间&#xff1a;2009-2022年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;证券代码、证券简称、上市日期、年份、资产总计、利息支出、…

C语言系统化精讲(一):C 语言开发环境搭建

文章目录 一、Windows 开发环境搭建1.1 安装 mingw 编译器1.2 下载并安装 CLion1.3 启动 CLion 二、Linux 开发环境搭建&#xff08;建议使用&#xff09;2.1 VMware Workstation Pro软件简介及安装2.2 安装 Ubuntu 系统2.2.1 Ubuntu 下载2.2.2 安装 Ubuntu2.2.3 安装共享文件夹…

汽车3D HMI图形引擎选择

2002年,电影《少数派报告》让观众深入了解未来。 除了情节的核心道德困境之外,大多数人都对它的技术着迷。 我们看到了自动驾驶汽车、个性化广告和用户可以无缝交互的 3D 计算机界面。 令人惊讶的是,虽然故事发生在 2054 年,但许多科幻想象的作品已经成为现实。 对于汽车和…

【C++】STL-常用算法-常用遍历算法

0.前言 1.for_each #include <iostream> using namespace std;// 常用遍历算法 for_each #include<vector> #include<algorithm>//普通函数 void print01(int val) {cout << val << " "; }//仿函数 class Print02 { public:void oper…

Playwright for Python:断言

一、支持的断言 Playwright支持以下几种断言&#xff1a; 断言描述expect(locator).to_be_checked()复选框被选中expect(locator).to_be_disabled()元素是禁用状态expect(locator).to_be_editable()元素是可编辑状态expect(locator).to_be_empty()容器是空的expect(locator).…