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

菜鸟驿站二维码/一维码 取件识别功能

特别注意需要引入 库文  ZXing

可跳转:

记录【WinForm】C#学习使用ZXing.Net生成条码过程_c# zxing-CSDN博客

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames;
using System.Drawing; 
using ZXing;
using System.Diagnostics;
using ImageMagick;
using System.IO;namespace ZXing1
{class Program{static void Main(string[] args){// 创建一个 Stopwatch 实例Stopwatch stopwatch = new Stopwatch();// 启动计时stopwatch.Start();GetSN();// 获取总用时TimeSpan timeElapsed = stopwatch.Elapsed;Console.WriteLine($"视觉识别总用时: {timeElapsed.TotalSeconds} S");Console.Read();}static List<string> CheckRETURN = new List<string>();public static void GetSN(){string outLab = Environment.CurrentDirectory + "\\WIN_1.jpg";string SnRetu = Getlab(outLab);Console.WriteLine(SnRetu);}public static void Caijian(string inputPath, string outputPath, int x, int y, int width, int height){// 加载原始图片using (Bitmap originalBitmap = new Bitmap(inputPath)){//Bitmap rotatedBitmap = RotateImage(originalBitmap, 90);//根据需求旋转90// 定义裁剪区域(x, y, width, height)Rectangle cropArea = new Rectangle(x, y, width, height); // 修改这些值以适应你的需求// 创建裁剪后的图片using (Bitmap croppedBitmap = CropImage(originalBitmap, cropArea)){// 保存裁剪后的图片croppedBitmap.Save(outputPath);//blackwrit(outputPath, outputPath);}}}static Bitmap CropImage(Bitmap source, Rectangle cropArea){// 确保裁剪区域在源图像范围内if (cropArea.X < 0 || cropArea.Y < 0 || cropArea.Right > source.Width || cropArea.Bottom > source.Height){throw new ArgumentException("裁剪区域超出了图像边界");}Bitmap croppedImage = new Bitmap(cropArea.Width, cropArea.Height);using (Graphics g = Graphics.FromImage(croppedImage)){g.DrawImage(source, new Rectangle(0, 0, cropArea.Width, cropArea.Height),cropArea, GraphicsUnit.Pixel);}return croppedImage;}public static string Getlab(string imagePath){var barcodeBitmap = (Bitmap)System.Drawing.Image.FromFile(imagePath);var barcodeReader = new BarcodeReader{Options = new ZXing.Common.DecodingOptions{// 支持多种条形码格式,包括二维码PossibleFormats = new List<BarcodeFormat>{BarcodeFormat.CODE_128, BarcodeFormat.CODE_39, BarcodeFormat.EAN_13,BarcodeFormat.EAN_8, BarcodeFormat.UPC_A, BarcodeFormat.UPC_E,BarcodeFormat.QR_CODE, BarcodeFormat.DATA_MATRIX}}};var result = barcodeReader.DecodeMultiple(barcodeBitmap);string strlab = string.Empty;if (result != null){strlab = result[0].ToString();int op = 0;foreach (var item in result){Console.WriteLine("识别内容: " + item.Text);DrawBarcodeRectangle(barcodeBitmap, item);op++;}Console.WriteLine($"共识别条码:{op}个");}else{strlab = "FAIL";Console.WriteLine("未能识别内容");}Console.WriteLine("========================模板识别========================");return strlab;}public static void DrawBarcodeRectangle(Bitmap frame, ZXing.Result result){// 获取条码位置的四个角点var points = result.ResultPoints;using (Graphics g = Graphics.FromImage(frame)){Pen pen = new Pen(Color.Green, 10); // 设置绘制矩形的颜色和宽度if (points.Length == 2){// 对于只检测到两个点的情况(例如一维条码),画一条线g.DrawLine(pen, new PointF(points[0].X, points[0].Y), new PointF(points[1].X, points[1].Y));float x = Math.Min(points[0].X, points[1].X);float y = Math.Min(points[0].Y, points[1].Y);g.DrawString(result.Text, new Font("Arial", 32, FontStyle.Bold), new SolidBrush(Color.Red), x,y);  // 将文字显示在矩形框的上方}else if (points.Length >= 4){// 如果有四个点,画出矩形框g.DrawPolygon(pen, new PointF[]{new PointF(points[0].X, points[0].Y),new PointF(points[1].X, points[1].Y),new PointF(points[2].X, points[2].Y),new PointF(points[3].X, points[3].Y)});}}// 显示结果图像ShowImage(frame);}// 用画图工具显示图片public static void ShowImage(Bitmap image){// 使用 System.Windows.Forms.PictureBox 或者你喜好的方法来显示图像using (var form = new System.Windows.Forms.Form()){form.Text = "Barcode Detected";var pictureBox = new System.Windows.Forms.PictureBox{Image = image,Dock = System.Windows.Forms.DockStyle.Fill,SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage};form.Controls.Add(pictureBox);form.ShowDialog();}}}
}

使用效果:

如果对条码不知道裁剪的方法如何使用可阅读我的另一篇文章:

c# 视觉识别图片文字_c# 识别二维码-CSDN博客

相关文章:

菜鸟驿站二维码/一维码 取件识别功能

特别注意需要引入 库文 ZXing 可跳转&#xff1a; 记录【WinForm】C#学习使用ZXing.Net生成条码过程_c# zxing-CSDN博客 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Net.…...

23种设计模式-备忘录(Memento)设计模式

文章目录 一.什么是备忘录设计模式&#xff1f;二.备忘录模式的特点三.备忘录模式的结构四.备忘录模式的优缺点五.备忘录模式的 C 实现六.备忘录模式的 Java 实现七.总结 类图&#xff1a; 备忘录设计模式类图 一.什么是备忘录设计模式&#xff1f; 备忘录设计模式&#xff08…...

搜维尔科技:Manus遥操作五指机械手专用手套惯性高精度虚拟现实

Manus遥操作五指机械手专用手套惯性高精度虚拟现实 搜维尔科技&#xff1a;Manus遥操作五指机械手专用手套惯性高精度虚拟现实...

MySql面试题.运维面试题之五

《(全国)MySQL数据库DBA测试题-第1套》 卷面总分 题号 单选题 多选题 判断题 100 题分 42 40 18 得分 一、单选题(每题3分,共计42分;得分____) 1. 二进制rpm包安装的mysql数据库,默认的数据文件存放在如下哪个目录里? A、/usr/local/mysql B、/tmp/ C、/var/lib/my…...

小程序-基于java+SpringBoot+Vue的小区服务管理系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…...

JWT 过期后 自动刷新方案

JWT&#xff08;JSON Web Token&#xff09;广泛应用于现代 Web 开发中的认证与授权&#xff0c;它以无状态、灵活和高效的特点深受开发者欢迎。然而&#xff0c;JWT 的一个核心问题是 Token 过期后如何处理。本文将总结常见的解决方案&#xff0c;分析其优缺点&#xff0c;并帮…...

react-amap海量点优化

前言&#xff1a;高版本的react-amap 支持MassMarkers 组件用于一次性添加大量的标记点。本次优化的海量点是在低版本react-amap的基础上。官方推荐使用聚合useCluster属性来优化海量点的渲染。 直接附上代码&#xff1a; import React, { Component } from "react"…...

GRU(门控循环单元)详解

1️⃣ GRU介绍 前面介绍的LSTM可以有效缓解RNN的梯度消失问题&#xff0c;但是其内部结构比较复杂&#xff0c;因此衍生出了更加简化的GRU。GRU把输入门和遗忘门整合成一个更新门&#xff0c;并且合并了细胞状态和隐藏状态。于2014年被提出 2️⃣ 原理介绍 GRU的结构和最简单…...

【代码随想录|回溯算法排列问题】

491.非减子序列 题目链接. - 力扣&#xff08;LeetCode&#xff09; 这里和子集问题||很像&#xff0c;但是这里要的是非递减的子序列&#xff0c;要按照给的数组的顺序来进行排序&#xff0c;就是如果我给定的数组是[4,4,3,2,1]&#xff0c;如果用子集||的做法先进行排序得到…...

Azure Kubernetes Service (AKS)资源优化策略

针对Azure Kubernetes Service (AKS)的资源优化策略&#xff0c;可以从多个维度进行考虑和实施&#xff0c;以提升集群的性能、效率和资源利用率。以下是一些关键的优化策略&#xff1a; 一、 Pod资源请求和限制 设置Pod请求和限制&#xff1a;在YAML清单中为所有Pod设置CPU和…...

R语言 | 宽数据变成一列,保留对应的行名和列名

对应稀疏矩阵 转为 宽数据框&#xff0c;见 数据格式转换 | 稀疏矩阵3列还原为原始矩阵/数据框&#xff0c;自定义函数 df3toMatrix() 目的&#xff1a;比如查看鸢尾花整体的指标分布&#xff0c;4个指标分开&#xff0c;画到一个图中。每个品种画一个图。 1.数据整理&#…...

RTSP播放器EasyPlayer.js播放器在webview环境下,PC和安卓能够正常播放,IOS环境下播放器会黑屏无法播放

流媒体技术分为顺序流式传输和实时流式传输两种。顺序流式传输允许用户在下载的同时观看&#xff0c;而实时流式传输则允许用户实时观看内容。 流媒体播放器负责解码和呈现内容&#xff0c;常见的播放器包括VLC和HTML5播放器等。流媒体技术的应用场景广泛&#xff0c;包括娱乐…...

.NET周刊【11月第3期 2024-11-17】

国内文章 .NET 9使用Scalar替代Swagger https://www.cnblogs.com/netry/p/18543378/scalar-an-alternative-to-swagger-in-dotnet-9 .NET 9 移除了 Swashbuckle.AspNetCore&#xff0c;因为其维护不力&#xff0c;并转向 Microsoft.AspNetCore.OpenApi。除了 Swashbuckle&am…...

c语言数据22数组使用

1.1数组分配的空间 int a[10]{1,2,3,4,5,6,7,8,9,10};//分配空间 元素类型大小int4*元素个数1040byte 元素之间空间连续 数组名代表数组首元素地址&#xff1b;a 取的是a[0]的地址&#xff1b;&a 是整个数组的地址 说明&#xff1a; 数组首元素地址&#xff1a; 0号元…...

深入理解TensorFlow中的形状处理函数

摘要 在深度学习模型的构建过程中&#xff0c;张量&#xff08;Tensor&#xff09;的形状管理是一项至关重要的任务。特别是在使用TensorFlow等框架时&#xff0c;确保张量的形状符合预期是保证模型正确运行的基础。本文将详细介绍几个常用的形状处理函数&#xff0c;包括get_…...

MySQL数据库3——函数与约束

一.函数 1.字符串函数 MySQL中内置了很多字符串函数&#xff0c;常用的几个如下&#xff1a; 使用方法&#xff1a; SELECT 函数名(参数);注意&#xff1a;MySQL中的索引值即下标都是从1开始的。 2.数值函数 常见的数值函数如下&#xff1a; 使用方法&#xff1a; SELECT…...

⾃动化运维利器 Ansible-Jinja2

Ansible-Jinja2 一、Ansible Jinja2模板背景介绍二、 JinJa2 模板2.1 JinJa2 是什么2.2 JinJa2逻辑控制 三、如何使用模板四、实例演示 按顺序食用&#xff0c;口味更佳 ( 1 ) ⾃动化运维利器Ansible-基础 ( 2 ) ⾃动化运维利器 Ansible-Playbook ( 3 ) ⾃动化运维利器 Ansible…...

博客文章怎么设计分类与标签

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;博客文章怎么设计分类与标签 新网站基本上算是迁移完了&#xff0c;迁移之后在写文章的过程中&#xff0c;发现个人的文章分类和标签做的太混乱了&#xff0c;分类做的像标签&#xff0c;标签也不是特别的丰富&#x…...

FastDDS之DataSharing

目录 原理说明限制条件配置Data-Sharing delivery kindData-sharing domain identifiers最大domain identifiers数量共享内存目录 DataReader和DataWriter的history耦合DataAck阻塞复用 本文详细记录Fast DDS中Data Sharing的实现原理和代码分析。 DataSharing的概念&#xff1…...

计算机网络在线测试-概述

单项选择题 第1题 数据通信中&#xff0c;数据传输速率&#xff08;比特率&#xff0c;bps&#xff09;是指每秒钟发送的&#xff08;&#xff09;。 二进制位数 &#xff08;我的答案&#xff09; 符号数 字节数 码元数 第2题 一座大楼内的一个计算机网络系统&#xf…...

FreeRTOS任务管理与调度机制详解

FreeRTOS任务管理深度解析1. 实时操作系统任务基础1.1 任务基本概念在实时操作系统(RTOS)中&#xff0c;任务是最基本的执行单元。每个实时应用可以作为一个独立的任务运行&#xff0c;具有以下特性&#xff1a;独立运行环境&#xff1a;每个任务拥有自己的运行上下文&#xff…...

DirectSPI:STM32寄存器级零开销SPI驱动库

1. DirectSPI 库概述DirectSPI 是一个面向特定 STM32 微控制器系列的超高速、零抽象层 SPI 驱动库。其设计哲学与标准 HAL/LL 库截然不同&#xff1a;不封装寄存器访问&#xff0c;不引入中间状态机&#xff0c;不进行参数校验&#xff0c;不依赖 CMSIS 启动文件或系统时钟配置…...

当代码遇见笔迹:HANDWRITTEN.js 如何让数字文字重获手写温度

当代码遇见笔迹&#xff1a;HANDWRITTEN.js 如何让数字文字重获手写温度 【免费下载链接】handwritten.js Convert typed text to realistic handwriting! 项目地址: https://gitcode.com/gh_mirrors/ha/handwritten.js 你是否曾怀念那些用笔尖在纸上沙沙作响的时光&…...

使用GitHub管理口罩检测开源项目

使用GitHub管理口罩检测开源项目 1. 引言 当你开始一个口罩检测开源项目时&#xff0c;如何高效地管理代码、协作开发和自动化流程就成了关键问题。GitHub作为全球最大的代码托管平台&#xff0c;提供了完整的工具链来支持开源项目的全生命周期管理。 我曾经参与过多个计算机…...

百融智能与中国人民大学高瓴人工智能学院智能体联合共建实验室正式揭牌

3月24日&#xff0c;百融智能&#xff08;原百融云创6608.HK&#xff09;与中国人民大学高瓴人工智能学院举行产学研合作发布会&#xff0c;并为“智能体联合实验室”揭牌。双方发布三项捐赠基金与六项联合研究课题&#xff0c;探索“科研攻关—人才培养—成果转化”的协同机制…...

SEO_2024年最新SEO策略与趋势深度解析(152 )

2024年SEO策略与趋势解析&#xff1a;如何在竞争中脱颖而出 随着互联网的迅猛发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;在数字营销中的重要性愈发凸显。2024年&#xff0c;SEO策略和趋势继续演变&#xff0c;如何把握最新动向&#xff0c;不仅能提升网站的排名…...

Wechat Bot 保姆级 NodeJS 打造微信 AI 机器人私人助手,抓取最新快讯

《前端开发面试题进阶秘籍》&#xff1a;前端登顶-前端知识点梳理 微信 AI 机器人-人工智能技术&#xff0c;为用户提供服务的自动化系统&#xff1a;具备自然语言处理能力、理解用户的文本或语音输入&#xff0c;并给出相应的回复或执行特定的任务的能力。 AI 机器人能够提供…...

Blender 3D创作套件:5大核心技术解析与完全指南

Blender 3D创作套件&#xff1a;5大核心技术解析与完全指南 【免费下载链接】blender Official mirror of Blender 项目地址: https://gitcode.com/gh_mirrors/bl/blender Blender作为一款免费开源的3D创作套件&#xff0c;为艺术家、设计师和开发者提供了从建模、动画到…...

STM32新手必看:如何用I2C驱动128x64 OLED屏幕(附完整代码)

STM32新手必看&#xff1a;如何用I2C驱动128x64 OLED屏幕&#xff08;附完整代码&#xff09; 在嵌入式开发中&#xff0c;OLED屏幕因其高对比度、低功耗和快速响应等优势&#xff0c;成为许多项目的首选显示方案。对于STM32初学者来说&#xff0c;掌握I2C接口驱动OLED屏幕是一…...

Wan2.2-I2V-A14B部署案例:中小企业低成本搭建私有AI视频生成平台

Wan2.2-I2V-A14B部署案例&#xff1a;中小企业低成本搭建私有AI视频生成平台 1. 引言&#xff1a;为什么选择私有部署AI视频生成平台 在数字内容创作需求激增的今天&#xff0c;视频制作已成为企业营销、产品展示的重要方式。传统视频制作流程复杂、成本高昂&#xff0c;而公…...