为何网站打开慢,工信部icp备案号查询,网站后台换qq,网站更改目录做301应用场景
检测文件中的印章和指纹捺印#xff0c;用于判断文件是否合规#xff08;是否盖章#xff0c;是否按印#xff09;
效果 项目 代码
using Microsoft.ML.OnnxRuntime;
using Microsoft.ML.OnnxRuntime.Tensors;
using OpenCvSharp;
using System;
using System.…应用场景
检测文件中的印章和指纹捺印用于判断文件是否合规是否盖章是否按印
效果 项目 代码
using Microsoft.ML.OnnxRuntime;
using Microsoft.ML.OnnxRuntime.Tensors;
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace Onnx_Yolov8_Detect
{public partial class Form1 : Form{public Form1(){InitializeComponent();}string fileFilter *.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png;string image_path ;string startupPath;string classer_path;string model_path;DateTime dt1 DateTime.Now;DateTime dt2 DateTime.Now;Mat image;Mat result_image;SessionOptions options;InferenceSession onnx_session;Tensorfloat input_tensor;ListNamedOnnxValue input_ontainer;IDisposableReadOnlyCollectionDisposableNamedOnnxValue result_infer;DisposableNamedOnnxValue[] results_onnxvalue;Tensorfloat result_tensors;float[] result_array;float[] factors new float[2];Result result;DetectionResult result_pro;StringBuilder sb new StringBuilder();private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd new OpenFileDialog();ofd.Filter fileFilter;if (ofd.ShowDialog() ! DialogResult.OK) return;pictureBox1.Image null;pictureBox2.Image null;textBox1.Text ;image_path ofd.FileName;pictureBox1.Image new Bitmap(image_path);image new Mat(image_path);}private void Form1_Load(object sender, EventArgs e){startupPath Application.StartupPath \\model\\;model_path startupPath seal_fingerprint.onnx;classer_path startupPath lable.txt;// 创建输出会话options new SessionOptions();options.LogSeverityLevel OrtLoggingLevel.ORT_LOGGING_LEVEL_INFO;options.AppendExecutionProvider_CPU(0);// 设置为CPU上运行// 创建推理模型类读取本地模型文件onnx_session new InferenceSession(model_path, options);// 输入Tensorinput_tensor new DenseTensorfloat(new[] { 1, 3, 640, 640 });// 创建输入容器input_ontainer new ListNamedOnnxValue();}private void button2_Click(object sender, EventArgs e){if (image_path ){return;}textBox1.Text 检测中请稍等……;pictureBox2.Image null;Application.DoEvents();//图片缩放image new Mat(image_path);int max_image_length image.Cols image.Rows ? image.Cols : image.Rows;Mat max_image Mat.Zeros(new OpenCvSharp.Size(max_image_length, max_image_length), MatType.CV_8UC3);Rect roi new Rect(0, 0, image.Cols, image.Rows);image.CopyTo(new Mat(max_image, roi));factors[0] factors[1] (float)(max_image_length / 640.0);//将图片转为RGB通道Mat image_rgb new Mat();Cv2.CvtColor(max_image, image_rgb, ColorConversionCodes.BGR2RGB);Mat resize_image new Mat();Cv2.Resize(image_rgb, resize_image, new OpenCvSharp.Size(640, 640));//输入Tensorfor (int y 0; y resize_image.Height; y){for (int x 0; x resize_image.Width; x){input_tensor[0, 0, y, x] resize_image.AtVec3b(y, x)[0] / 255f;input_tensor[0, 1, y, x] resize_image.AtVec3b(y, x)[1] / 255f;input_tensor[0, 2, y, x] resize_image.AtVec3b(y, x)[2] / 255f;}}//将 input_tensor 放入一个输入参数的容器并指定名称input_ontainer.Add(NamedOnnxValue.CreateFromTensor(images, input_tensor));dt1 DateTime.Now;//运行 Inference 并获取结果result_infer onnx_session.Run(input_ontainer);dt2 DateTime.Now;//将输出结果转为DisposableNamedOnnxValue数组results_onnxvalue result_infer.ToArray();//读取第一个节点输出并转为Tensor数据result_tensors results_onnxvalue[0].AsTensorfloat();result_array result_tensors.ToArray();resize_image.Dispose();image_rgb.Dispose();result_pro new DetectionResult(classer_path, factors,0.7f);result result_pro.process_result(result_array);result_image result_pro.draw_result(result, image.Clone());if (!result_image.Empty()){pictureBox2.Image new Bitmap(result_image.ToMemoryStream());sb.Clear();sb.AppendLine(推理耗时: (dt2 - dt1).TotalMilliseconds ms);sb.AppendLine(------------------------------);for (int i 0; i result.length; i){sb.AppendLine(string.Format({0}{1},({2},{3},{4},{5}), result.classes[i], result.scores[i].ToString(0.00), result.rects[i].TopLeft.X, result.rects[i].TopLeft.Y, result.rects[i].BottomRight.X, result.rects[i].BottomRight.Y));}textBox1.Text sb.ToString();}else{textBox1.Text 无信息;}}private void pictureBox2_DoubleClick(object sender, EventArgs e){Common.ShowNormalImg(pictureBox2.Image);}private void pictureBox1_DoubleClick(object sender, EventArgs e){Common.ShowNormalImg(pictureBox1.Image);}}
}