当前位置: 首页 > news >正文

基于OpenVinoSharp和PP-Vehicle的车辆检测

参考了C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色),但是使用Onnx加载PP-Vehicle模型失败,所以使用OpenVinoSharp以加载飞浆原生模型。

效果

项目

OpenCvSharp 4.11.0.20250507

OpenVINO.CSharp.Windows 2024.0.0.1

代码

        private const int INPUT_WIDTH = 640;private const int INPUT_HEIGHT = 640;private const int INPUT_CHANNELS = 3;private Mat image;private void Detect(){float[] inputData = PreprocessImage();var core = new OpenVinoSharp.Core();var model = core.read_model(@"./mot_ppyoloe_l_36e_ppvehicle/model.pdmodel");  // 读取模型文件var compiled_model = core.compile_model(model, "CPU");var inferRequest = compiled_model.create_infer_request();Console.WriteLine("模型加载成功");float[] factor = new float[] { 640.0f / image.Rows, 640.0f / image.Cols };var ipunt = compiled_model.inputs()[1];var inputTensor = inferRequest.get_tensor("image");inputTensor.set_shape(new Shape(1, 3, 640, 640));inputTensor.set_data(inputData);Tensor input_tensor_factor = inferRequest.get_tensor("scale_factor");input_tensor_factor.set_shape(new Shape(1, 2));input_tensor_factor.set_data<float>(factor);// 执行推理inferRequest.infer();// 获取输出 Tensor output_tensor = inferRequest.get_output_tensor(0);var output_tensor_2 = inferRequest.get_output_tensor(1);int output_length = (int)output_tensor.get_size();float[] outputData = output_tensor.get_data<float>(output_length);pictureBox1.Image = new System.Drawing.Bitmap(image.ToMemoryStream());for (int i = 0; i < output_length / 6; i++){int offset = i * 6;int classId = (int)outputData[offset];float confidence = outputData[offset + 1];if (confidence > 0.5f) // 置信度阈值{Console.WriteLine(classId);int xMin = (int)outputData[offset + 2];int yMin = (int)outputData[offset + 3];int xMax = (int)outputData[offset + 4];int yMax = (int)outputData[offset + 5];image.Rectangle(new Rect(xMin, yMin, xMax - xMin, yMax - yMin), Scalar.Red, 3);}}pictureBox2.Image = new System.Drawing.Bitmap(image.ToMemoryStream());}private float[] PreprocessImage(){// 调整大小image = new Mat(@"1.bmp");var resizedImage = image.Resize(new OpenCvSharp.Size(640, 640));//image.SaveImage("640.bmp");// 转换为float数组并归一化float[] inputData = new float[INPUT_WIDTH * INPUT_HEIGHT * INPUT_CHANNELS];for (int y = 0; y < INPUT_HEIGHT; y++){for (int x = 0; x < INPUT_WIDTH; x++){int index = y * INPUT_HEIGHT + x;Vec3b pixel = resizedImage.Get<Vec3b>(y, x);inputData[index] = pixel.Item0;inputData[index+ 640 * 640] = pixel.Item1;inputData[index + 640 * 640 + 640 * 640] = pixel.Item2;}}return inputData;}


文章转载自:

http://LEefY2hG.njdtq.cn
http://CxIuJTrV.njdtq.cn
http://LRyMeBnl.njdtq.cn
http://LuuWgZs2.njdtq.cn
http://8aXHvTNA.njdtq.cn
http://wj44uYRv.njdtq.cn
http://LMkKzfB2.njdtq.cn
http://Z3N6hgPk.njdtq.cn
http://c5V4hj1R.njdtq.cn
http://Kk5ibIno.njdtq.cn
http://LrfX01qz.njdtq.cn
http://JKp26ADU.njdtq.cn
http://oszfwFhS.njdtq.cn
http://mKEwgfsK.njdtq.cn
http://lE0aZ2ED.njdtq.cn
http://LO5YihyI.njdtq.cn
http://zG4oSESt.njdtq.cn
http://i78qO20D.njdtq.cn
http://9OAYo80G.njdtq.cn
http://9xCCYrg6.njdtq.cn
http://64KS2Rak.njdtq.cn
http://FTuOaB0S.njdtq.cn
http://dokceTPs.njdtq.cn
http://JweUxeN5.njdtq.cn
http://ZXj6tNGw.njdtq.cn
http://rMoxvHj9.njdtq.cn
http://bDHj4aN6.njdtq.cn
http://gWH68MGR.njdtq.cn
http://cHgCMwTR.njdtq.cn
http://0nGWTnwO.njdtq.cn
http://www.dtcms.com/a/380951.html

相关文章:

  • [论文阅读] 人工智能 | 软件工程 - 软件测试 | 从黑盒到透明:AUTOSTUB用进化算法打通符号执行的“最后一公里”
  • zmq源码分析之io_thread_t
  • 什么是财报自动识别?5分钟OCR识别录入1份财务报表
  • 《Html模板》HTML数学题目生成器 - 让数学练习更简单(附源码)
  • leetcode29( 有效的括号)
  • SpringBoot实现WebSocket服务端
  • AI赋能与敏捷融合:未来电源项目管理者的角色重塑与技能升级——从华为实战看高技术研发项目的管理变革
  • 从入门到了解C++系列-----C++11 新语法
  • 数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
  • zmq源码分析之mailbox
  • AI智能体时代的可观测性
  • Transformer架构详解:革命性深度学习架构的原理与应用
  • PAT乙级_1114 全素日_Python_AC解法_含疑难点
  • 一、HTML 完全指南:从零开始构建网页
  • 【硬件-笔试面试题-87】硬件/电子工程师,笔试面试题(知识点:解决浪涌电压)
  • Spring的注解
  • Java Class Analyzer MCP Server:让AI精准理解Java依赖的利器
  • 创建自己的Docker镜像,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
  • Windows11安装Docker Desktop
  • FastJson解析对象后验签失败问题分析
  • 【Vue2手录12】单文件组件SFC
  • Pinia
  • MySQL按时间Range分区
  • python发送请求SSL验证设置
  • 关于栈和队列的OJ练习
  • WebGIS包括哪些技术栈?怎么学习?
  • 15、优化算法工程实践 - 从数学理论到AI训练的核心引擎
  • VS2019 Community 社区版下载链接
  • 高低压隔离器的技术演进与行业赋能
  • 氚燃料增殖里程碑:MIT新型BABY包层技术实验验证