C# Emgu.CV 条码检测
效果
项目

代码
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;
using Emgu.CV;
using Emgu.CV.Util;
using static Emgu.CV.BarcodeDetector;namespace Emgu.CV_条码检测
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";Bitmap bmp;String imgPath = "";Graphics g = null;Pen p = new Pen(Brushes.Red);SolidBrush drawBush = new SolidBrush(Color.Red);Brush bush = new SolidBrush(Color.Green);Font drawFont = new Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Millimeter);const string prototxt_path = "sr.prototxt";const string caffe_model_path = "sr.caffemodel";private void button2_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;imgPath = ofd.FileName;bmp = new Bitmap(imgPath);pictureBox1.Image = bmp;g = Graphics.FromImage(bmp);g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;}private void button1_Click(object sender, EventArgs e){if (pictureBox1.Image == null){return;}BarcodeDetector barcodeDetector = new BarcodeDetector(prototxt_path, caffe_model_path);VectorOfCvString vectorOfCvString = new VectorOfCvString();VectorOfInt vectorOfInt = new VectorOfInt();Mat src = new Mat(imgPath, CV.CvEnum.ImreadModes.Grayscale);Mat rects = new Mat();bool b = barcodeDetector.Detect(src, rects);Mat mat = new Mat();bool b2 = barcodeDetector.DetectAndDecode(src, vectorOfCvString, vectorOfInt, mat);Array data = rects.GetData();if (data == null) { return; }int num = data.GetLength(0);for (int i = 0; i < num; i++){float x1 = (float)data.GetValue(i, 0, 0);float y1 = (float)data.GetValue(i, 0, 1);float x2 = (float)data.GetValue(i, 1, 0);float y2 = (float)data.GetValue(i, 1, 1);float x3 = (float)data.GetValue(i, 2, 0);float y3 = (float)data.GetValue(i, 2, 1);float x4 = (float)data.GetValue(i, 3, 0);float y4 = (float)data.GetValue(i, 3, 1);g.FillEllipse(bush, x1, y1, 10, 10);g.DrawString("1", drawFont, drawBush, x1, y1);g.FillEllipse(bush, x2, y2, 10, 10);g.DrawString("2", drawFont, drawBush, x2, y2);g.FillEllipse(bush, x3, y3, 10, 10);g.DrawString("3", drawFont, drawBush, x3, y3);g.FillEllipse(bush, x4, y4, 10, 10);g.DrawString("4", drawFont, drawBush, x4, y4);g.DrawRectangle(p, x2, y2, x4 - x2, y4 - y2);}pictureBox2.Image = bmp;}}
}
Demo下载
相关文章:
C# Emgu.CV 条码检测
效果 项目 代码 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; using Emgu.CV; using Emgu.CV.Util; using static Emgu.C…...
VueRouter的基本使用
路由的基本使用 文章目录 路由的基本使用01-VueRouterVueRouter的使用 ( 5 2)综合代码 拓展:组件存放问题 什么是路由呢? 在生活中的路由:设备和IP的映射关系 在Vue中:路径 和 组件 的 映射 关系。 01-Vu…...
网工笔记:快速认识7类逻辑接口
逻辑接口是指能够实现数据交换功能但物理上不存在、需要通过配置建立的接口。逻辑接口需要承担业务传输。 下面是我整理了7款常见的逻辑接口。 接口类型 描述 Eth-Trunk接口 具有二层特性和三层特性的逻辑接口,把多个以太网接口在逻辑上等同于一个逻辑接口&…...
MySQL中的free链表,flush链表,LRU链表
一、free链表 1、概述 free链表是一个双向链表数据结构,这个free链表里,每个节点就是一个空闲的缓存页的描述数据块的地址,也就是说,只要你一个缓存页是空闲的,那么他的描述数据块就会被放入这个free链表中。 刚开始数…...
mac使用VsCode远程连接服务器总是自动断开并要求输入密码的解决办法
在mac中使用vscode远程连接服务器,时常会出现自动断开并要求重新输入服务器密码的问题,接下来让我们来解决它: 1、首先,在本地创建公钥: ssh-keygen 这条命令执行之后,出现提示直接回车即可;直…...
Python爬虫分布式架构 - Redis/RabbitMQ工作流程介绍
在大规模数据采集和处理任务中,使用分布式架构可以提高效率和可扩展性。本文将介绍Python爬虫分布式架构中常用的消息队列工具Redis和RabbitMQ的工作流程,帮助你理解分布式爬虫的原理和应用。 为什么需要分布式架构? 在数据采集任务中&#…...
【ES】笔记-集合介绍与API
集合是一种不允许值重复的顺序数据结构。 通过集合我们可以进行并集、交集、差集等数学运算, 还会更深入的理解如何使用 ECMAScript 2015(ES2015)原生的 Set 类。 构建数据集合 集合是由一组无序且唯一(即不能重复)的项组成的。该数据结构使用了与有限集合相同的数…...
Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】
😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…...
二、Tomcat 安装集
一、Tomcat—Docker 1. 拉取镜像 # 1、拉取镜像(tomcat版本8,jre版本8)。 docker pull tomcat:8-jre82. 启动容器 # 2、启动一个tomcat容器。 docker run -id --name tomcat -p 8080:8080 镜像ID # 3、宿主机里新建/root/tomcat目录&#x…...
CentOS 上通过 NFS 挂载远程服务器硬盘
NFS(Network File System)是一种用于在不同的计算机系统之间共享文件和目录的协议。它允许一个计算机系统将其文件系统的一部分或全部内容暴露给其他计算机系统,使其能够像访问本地文件一样访问这些内容。在这篇博客中,我们将介绍…...
微信小程序中的 广播监听事件
定义 WxNotificationCenter.js 文件; /*** author: Di (微信小程序开发工程师)* organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)* 垂直微信小程序开发交流社区* * github地址: https://github.com/icindy/WxNotificationCenter…...
Quickstart: MinIO for Linux
单节点部署教程 1.安装Minio服务端 //wget下载二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/minio //赋予权限 chmod x minio //将minio可执行文件移入usr/local/bin目录下,使得minio可以全局执行 sudo mv minio /usr/local/bin/ 2.启动Mi…...
Java中word转Pdf工具类
背景: 最近做的一个项目中,对于word转Pdf用的地方很多,特此记录 搭建总图: 代码部分: 1.需要的jar包: aspose-words-15.8.0-jdk16.jar 注:下载好这个jar包后,在项目的根目录新建一…...
【conda install】网络慢导致报错CondaHTTPError: HTTP 000 CONNECTION FAILED for url
⭐⭐问题: 部署安装环境经常会出现由于网络慢问题,导致conda安装不了库,报错如下: Solving environment: failedCondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/…...
2023-8-28 图中点的层次(树与图的广度优先遍历)
题目链接:图中点的层次 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 100010;int h[N], e[N], ne[N], idx; int n, m; int q[N], d[N];void add(int a, int b) {e[idx] b, ne[idx] h[a], h…...
设计模式(一)
1、适配器模式 (1)概述 适配器中有一个适配器包装类Adapter,其包装的对象为适配者Adaptee,适配器作用就是将客户端请求转化为调用适配者中的接口;当调用适配器中的方法时,适配器内部会调用适配者类的方法…...
Prometheus关于微服务的监控
在微服务架构下随着服务越来越多,定位问题也变得越来越复杂,因此监控服务的运行状态以及针对异常状态及时的发出告警也成为微服务治理不可或缺的一环。服务的监控主要有日志监控、调用链路监控、指标监控等几种类型方式,其中指标监控在整个微服务监控中比重最高,也是实际生…...
CSS实现白天/夜晚模式切换
目录 功能介绍 示例 原理 代码 优化 总结 功能介绍 在网页设计和用户体验中,模式切换功能是一种常见的需求。模式切换可以为用户提供不同的界面外观和布局方案,以适应其个人偏好或特定环境。在这篇博客中,我们将探索如何使用纯CSS实现一…...
selenium实现输入数字字母验证码
思路 1. 登录url 2. 获取验证码坐标 3. 根据桌标截图验证码 4. 对验证码进行识别 5. 自动输入验证码 测试代码 import os import time from io import BytesIO from PIL import Image from selenium import webdriver from selenium.webdriver.common.by import By impo…...
Docker的运用
文章目录 一、 Docker介绍二、Docker常用命令三、Docker 部署微服务项目四、Docker 使用场景五、Docker模拟场景5.1 模拟部署Nacos5.2 模拟部署Mongodb5.3 模拟部署RabbitMQ 一、 Docker介绍 Docker是一种开源软件平台,用于在不同的操作系统(如Windows、…...
MacOS光标增强工具:命令行驱动,实现自动化与个性化配置
1. 项目概述:当光标成为生产力工具如果你是一名长期在macOS上工作的开发者、设计师或者文字工作者,你肯定对系统自带的光标功能又爱又恨。爱的是它简洁流畅,恨的是它在某些高强度、多任务场景下显得力不从心。比如,当你需要在多个…...
FastAPI快速入门:环境搭建+第一个接口
FastAPI快速入门:环境搭建第一个接口文章信息 标题:FastAPI快速入门:环境搭建第一个接口字数:4200字预估阅读时间:18分钟难度:⭐☆☆☆☆一、为什么选择FastAPI? 在2026年的Python Web框架生态中…...
Arm Neoverse CMN-650架构与性能优化解析
1. Arm Neoverse CMN-650架构概览在现代多核处理器系统中,一致性互连网络扮演着至关重要的角色。作为Arm Neoverse平台的核心组件,CMN-650采用Mesh拓扑结构设计,为多核处理器集群提供高效的数据传输和缓存一致性管理。这种架构特别适合需要高…...
Windows上的革命性文件系统:WinBtrfs完整指南与实用教程
Windows上的革命性文件系统:WinBtrfs完整指南与实用教程 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs WinBtrfs是一个开源的Windows驱动程序,为Windows用户带…...
Doramagic开源工具箱:开发者效率提升的模块化实践
1. 项目概述:Doramagic,一个为开发者打造的魔法工具箱最近在GitHub上闲逛,发现了一个挺有意思的项目,叫“tangweigang-jpg/Doramagic”。光看这个名字,可能有点摸不着头脑,但点进去一看,发现这其…...
为 Node js 服务配置 Taotoken 以实现异步 AI 内容生成
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为 Node.js 服务配置 Taotoken 以实现异步 AI 内容生成 为 Node.js 应用添加 AI 生成能力,例如自动生成文章摘要或代码…...
3个技巧让你的技术文档阅读体验提升300%:Markdown Viewer深度指南
3个技巧让你的技术文档阅读体验提升300%:Markdown Viewer深度指南 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 还在为浏览器中那些丑陋的Markdown文件预览而烦恼吗…...
保姆级教程:用R的ggstatsplot包,一键生成带统计检验的SCI级小提琴图
科研绘图革命:用ggstatsplot一键生成统计检验小提琴图的终极指南 在生物医学和生物信息学研究中,数据可视化与统计分析是论文写作中不可或缺的环节。传统流程中,研究者需要先进行统计检验,再将结果手动添加到图表中,这…...
3D结构光相机 | 抓取/焊接/测量全搞定,高反光黑色物体重建精度高,工业场景全覆盖,户外无惧强光
一 产品介绍苏州三迪斯维出品的3D相机采用主动结构光技术,拍摄速度快、成像精细、方案成熟稳定,针对不同应用场景物体可输出高质量点云数据图,精度高、速度快、环境自适应性强,不用系列适用场景不同,分别如下ÿ…...
基于Tauri与语义网络的本地优先知识管理工具Engram技术解析
1. 项目概述:从“记忆宫殿”到数字思维引擎最近在折腾一个叫Engram的开源项目,它来自 GitHub 上的 spectra-g。初看这个名字,你可能会联想到“记忆痕迹”或者“思维印记”,没错,它的核心目标就是成为你个人数字思维的“…...
