数码管显示数值实时识别系统的搭建记录(一):环境配置

数码管数字识别方法整理 数码管数字识别方法整理图像任务OCR任务图像分类目标检测图像分割图像增强视频任务正文: OCR——数码管数字识别方法整理文本检测+ 字符分割+ 单数字识别参考资料:参考博客:参考代码使用工具常见挑战比赛(数据)文本检测DB: Real-time Scene Text Detection with Differentiable Binarizationcook文本检测+ 序列识别序列识别 CRNN == CNN +RNN +CTC序列识别—— 基于attention文字识别tessernet工具/  百度A 阅读详情

 

准备尝试使用python,搭建一个针对采用数码管作为显示元件的仪器仪表示值实时录入系统,那么来试试吧。

1.系统配置。

操作系统:win10家庭版

    处理器:Intel(R)Core(TM)i5-4200U CPU@1.6GHz 2.30GHz

       RAM:8.00GB

        其他:Anconda Pyhthon 3.7 version

2.使用conda创建新的python虚拟环境。

这里可以使用命令行查看可安装的版本

conda search --full-name python

conda create -n led_recognition python=3.7

激活新环境

activate led_recognition

这里碰到了问题,在powershell中无法正常激活,cmd中是可以的。

查到了这个博主写的解决办法,十分清楚。conda在4.6版本中增加了对PowerShell的支持,无需修改PATH,对系统中其他软件的破坏性也得到降低。

https://www.cnblogs.com/dereen/p/ps_conda_env.html

我准备采取把conda升级到4.6版本以上的法子。刚好赶上了4月16日清华源宣布停止Anaconda镜像服务,所以还得换回官方的源。

conda config --remove-key channels

conda update conda #升级conda
conda init #安装shell的支持

这里出现了问题,需要调整PowerShell的执行策略,使用管理员权限打开PowerShell。

Set-ExecutionPolicy RemoteSigned

重新打开PowerShell窗口,激活新环境。

conda activate led_recognition

3.安装所需的模块。

3.1 安装tensorflow

conda install tensorflow

这里安装的CPU版本,需要安装GPU版本的可以参考这个博主的内容,https://blog.youkuaiyun.com/qq_30611601/article/details/79067982

3.2 安装opencv

conda install opencv

3.3 安装jupyter

conda install jupyter 

3.4 安装syder

conda install spyder

3.5 测试安装环境

import tensorflow as tf #测试tensorflow工作是否正常
hello = tf.constant('Hello,TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

tensorflow正常

import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    cv2.imshow('object detection', frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break
cap.release()
cv2.destroyAllWindows()

opencv正常

28- 基于OCR的工业仪表数码管智能识别实战 本文深入探讨了基于OCR技术的工业仪表数码管智能识别实战方案。针对工业场景中数码管识别存在的强光反射、图像模糊等挑战,详细介绍了从数据合成与标注、模型选型与微调(如PP-OCRv3、SVTR_Tiny),到部署优化及系统集成的全流程。重点分享了如何利用合成数据与真实数据结合训练,以及构建从检测、识别到后处理的完整流水线,为工业自动化读数提供了一套高效、可靠的解决方案。 阅读详情

相关推荐

树莓派Python图像识别:数码管数字识别并远程上传上位机(准确度超高干货)

使用环境(蓝色粗体字为特别注意内容)1、软件环境:ubuntu-pi、python3、opencv32、硬件环境:树莓派3B+ 好几天没写博客了,这几天都在忙,今天刚好闲下来,就写写博客。本文就总结一下之前做的一个项目吧,在树莓派中利用摄像头进行图像识别,将数码管中的数字识别出来,然后远程发送到服务器上。先来看看系统实物图: 1、软件方面,使用Python作为编程语言,简单做了个下位机界面...

pang9998的博客 8207

数码管识别

由于七段数码管显示数字和字符比较直观、清晰、响应速度快,所以它被广泛应用在现场仪器仪表中。通过摄像头获取数码管数字图片,也可以根据数码管编码方式比较容易识别出其中的数字。 计数器、频率计上的数码管显示动态变化的数字 根据不同的显示原理,七段数码管可以使用LED、LCD、OLED、场致发光管等制作,颜色也有很多种类。其中红色LED的数码管比较常见。 红色七段数码管0~9显示的图片 数码管的七个笔...

TSINGHUAJOKING 2935

opencv 数字识别 数码管

QT opencv 数码管数字识别设备及配置:qt5.12 msvc2013opencv321摄像头是普通USB无驱一、首先,配置.pro文件二、添加界面配置三、主要处理步骤 设备及配置: qt5.12 msvc2013 opencv321 摄像头是普通USB无驱 一、首先,配置.pro文件 二、添加界面配置 三、主要处理步骤 过程中参考了以下几篇博文: 透视变换 垂直投影分割字符 穿线法 ...

老毛鸪的博客 2721

利用python-opencv对LED数码管显示数字进行有效识别

因为项目原因,现在要搞一个LED数码管的数字识别,识别包含各种各样的数码管,需要做通用匹配的文件,主要是利用opencv的的函数调用,并结合段式数码管的发光物理特性进行有效识别。 在项目中因为需要匹配各种各样的数码管,包含数字+小数点的识别,因此实际效果非常好。 各种数码管的图片都是通过网络下载以后,然后标定需要识别的POI区域,对POI区域内的数字加小数点进行有效识别。非常简单,大概调试了3天左右。 有需要合作的项目可以私信联系 以下是识别图片内的数码管显示内容结果描述: ...

Gray.Sky.MzY 6250

QT:用opencv的KNN识别图片中的LED数字(一)

一款功能测试的软件demo,使用了QT作为界面,主要使用了opencv的KNN识别,使用gstreamer作为管道,用来打开图片。后期会写一篇打开摄像头实时识别的文章。

Alon1787的博客 1766

基于OpenCV的LED数码管数字识别:传统图像处理实战

光学字符识别(OCR)是计算机视觉的核心技术之一,旨在将图像中的文字转换为可编辑的文本数据。其原理通常涉及图像预处理、特征提取和模式匹配。在工业物联网等资源受限或场景特定的应用中,传统图像处理方案因其低计算开销、高可解释性和无需大量标注数据的特点,展现出独特的技术价值。本文聚焦于LED数码管数字识别这一具体应用场景,针对其发光特性、固定字符集和潜在的光照不均、透视变形等挑战,详细阐述了如何利用OpenCV库,通过图像灰度化、二值化、形态学操作、轮廓查找与特征分析(如七段码解析)等步骤,构建一个轻量级、高鲁棒

weixin_34126557的博客 321

LED数码管数字数据集

LED数码管数字数据集,结合百度OCR取得很好效果 数据集结合百度的OCR百度的OCR:https://gitee.com/paddlepaddle/PaddleOCR/tree/release/2.1/,程序对应数据集训练进行目标检测识别 数据包一:LED数码管数字识别:数据集地址:LED数码管数字数据集:https://download.youkuaiyun.com/download/qq_46107892/33625696 1:支持百度OCR文字识别案例中的文字识别数据集,通过深度学习后可以识别LED数码

qq_46107892的博客 4951

计算机视觉+OCR:计量检定仪表数字识别与自动化记录全解析

计量检定中,仪表读数的准确记录是保障量值溯源的关键环节。传统人工抄表易受视差、疲劳等因素影响,而计算机视觉与OCR技术的结合,为数字字符识别提供了自动化解决方案。通过摄像头采集、图像预处理、字符分割与分类识别等流程,系统能够将屏幕上的数码管或液晶数字转化为结构化数据,并自动完成误差计算、合格判定与记录存储。该技术不仅显著提升检定效率与准确性,还广泛应用于计量院所、企业校准实验室及产线检点工位。围绕仪表数字识别与检定数据自动化记录,文章从光学选型、算法实现到工程落地,系统性解析了一套完整的实践路径。

weixin_29061531的博客 89

虚拟电梯工程师:Multisim仿真中的交互式故障诊断实践

本文探讨了Multisim仿真在电梯控制系统教学中的应用,重点介绍了交互式故障诊断的实践方法。通过构建电梯控制电路模块,设计机械和电子类故障场景,学员可以在虚拟环境中掌握系统化诊断流程和逻辑分析仪的高级应用技巧。文章特别详细解析了按钮抖动故障的解决方案,为电子技术教学提供了创新思路。

sql99的博客 177

Led 显示 类 数码管 数码 数字

文件名: LedDisp.h 版本号: v1.0.5 (v20091122.00001) 功能: 显示七段数码管风格的数字、小数点、冒号及部分字母。 (此版本理论上可用于MFC,Win32 SDK或其它环境,在Windows XP sp2下用vc6.0及vs2008编译、运行通过.) 第一作者: Jef 日期: 20091122 电子邮件: dungeonsnd@126.com 地址: 中国/江苏 版权: 1.您可以修改及免费使用本程序,但把本程序或修改后程序用于商业用途前请先通知第一作者并得到作者的许可。 2.修改之后保留此文件开头处的文件说明信息并更改副版本号(如 v20090825.00001 改成 v20091002.00001 ), 并拷贝一份附上您的个人信息发送到上面的作者邮箱,作者负责在全面测试后发布您修改后的新版本。 3.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任,一概与第一作者及合作单位无关。 4.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 其它: v1.0.1 (v20090825.00001) v1.0.2 (v20091026.00001) 1.增加Hide()方法 2.增加IsHide()方法 3.增加Disp(CDC* pdc,CRect DispRect,int iDigitsAmount,CString cs);方法 4.等 v1.0.3 (v20091031.00001) 1.增加多个小数点和冒号显示支持 2.增加GetLedFont()方法 3.修改了显示熄灭数码管的内部实现 4.等 v1.0.4 (v20091105.00001) 1.修改了SetSegmentPosition(int index)函数,增加内部属性 修正因子m_bMakeAmend, 设置修改因子为真时,在特殊情况下(如用户设置段宽度为2个像素或者1个像素), 程序将保证所有段的宽度相等,并且保证段与段不会相连. 2.修改了保存显示区域背景机制! 前一版本在调用数码管显示函数(Disp()等函数)时会自动 保存一幅对应于显示区域RECT的位图,此种机制当用户在OnPaint()函数里调用显示 函数而不调用Hide()时,并且此时的RECT在每次调用显示函数时都改变,则会导致保存 背景位图的向量m_vecBkSave不断扩大,而实际上保存的位图将没有作用且浪费大量内存! 如: void CLEDView::OnPaint() { CPaintDC dc(this); OnShow(); //不断的以不同的RECT区域调用Disp()将导致保存的 //位图(对应于每个区域)数量剧增! } void CLEDView::OnShow() { CClientDC dc(this); CRect rtClient; GetClientRect(&rtClient); double m_x =rtClient.Width()/800.0; double m_y =rtClient.Height()/600.0; CRect rt0; rt0.SetRect(20*m_x,10*m_y,220*m_x,410*m_y); led.Disp((CDC*)&dc,rt0,1,_T("1:")); } 解决方案: 保存位图将不再以RECT来标识,而是以一个用户输入的字符串来标识. 3. 添加MFC之外框架的支持.(未完成,未测试,希望测试的用户给作者联系测试结果.如WIN32 SDK,WTL等环境下.) v1.0.5 (v20091122.00001) 1. 增加UNICODE支持 2.完成MFC外的某些框架的支持 3.修改了和完善了某些代码段。如 删除保存背景的 向量某一元素之前先把其中的位图删除; 内存dc用完之后添加删除操作 DeleteDC ; 构析函数中增加了删除 全部位图资源操作 4. 修改了数个变量名使其更统一,如 SHOWPOS改成了iShowPos; 删除了某些接口,如 DispInt(); 2.说明及注意 (Attention!) a.支持 改变数码管亮时的颜色 灭时颜色 区域背景色,支持居左居中居右显示,支持细调显示的位置(SetFont();)及数码管粗细等细节. 支持距离左或右一定距离显示字符串(m_iDistaceToRight). 支持创建不定数量的自定义字体(LedFontID来表示已创建的不同字体,已经创建过的字体被再次创建时则改写这个字体). 支持默认参数(调用时可以依次不传递有默认值参数). b.显示的字符的宽度与高度不随窗口的大小变化而自动变化,故调用者应自行处理. c.内部不含自动重画功能,故调用者应自己处理窗口重绘时字符的重新显示. d.字符串内可同时含 ":"与"." ,但字符串左起第一个字符不能为":"或"." ,且不能连续两个不点位符号,如小数点或冒号!! e.能显示的字符包括 0-9,a-f,A-F,".",":","-" f.如 bool Disp(HDC hDc,RECT rtDispRect,TCHAR* cs,int iFontWidth,int iFontHeight,TCHAR* strIdentifier=_T("LedValue1")); 用户应自己设置好 rtDispRect与iFontWidth iFontHeight 的大小关系. 如果iFontHeight大于rtDispRect.Height(),则超出DispRect区域显示字符. 但左右可能不会超出显示(用户可设置m_bShowWhenOverstepRect来控制是否显示). 调用者应自己保证使字符串能全部显示在DispRect中,否则超出部分可能不会显示!!! g.当字符的宽度与数码管的每一段的宽度比例严重失调时,显示的字符会严重失真(如数码管每一段宽度为5个像素, 而长度却也为5像素则显示效果将失真)! 一般情况下,iFontHeight=2*m_iFontWidth,m_dSegmentWidth远小于m_iFontWidth h. led.SetColor(RGB(0,200,0)) 等方法会改变类的字体属性,故之后调用显示时字体属性都会发生改变. 但创建新的字体时不会改变类的字体属性. i.调用 Disp(...,strIdentifier)等此类数码管显示函数显示数码管后, 显示区域的背景及区域会自动保存. 1.再次调用Disp(...,strIdentifier)时会用新的显示区域的背景替换原背景及区域; 2.调用Hide(...,strIdentifier)方法时程序会自动删除strIdentifier对应原位图及区域,然后隐藏该区域的数码管(用原背景位图贴在此区域); 3.对象析构时会自动删除已经保存的所有的背景位图及区域. 3.使用方法(仅举一种使用方法) (Using e.g.) i. void CLEDView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here OnShow(); // Do not call CView::OnPaint() for painting messages } void CLEDView::OnShow() { // TODO: Add your command handler code here CClientDC dc(this); CRect rtClient; GetClientRect(&rtClient); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memdc; memdc.CreateCompatibleDC(&dc); memdc.SelectObject(&bmp); dc.StretchBlt(0,0,rtClient.Width(),rtClient.Height(),&memdc,0,0, 800,600,SRCCOPY); double m_x =rtClient.Width()/800.0; double m_y =rtClient.Height()/600.0; CRect rt0; rt0.SetRect(int(20*m_x),int(10*m_y),int(420*m_x),int(80*m_y)); CString s; s ="123-:1:."; TCHAR str[256]; sprintf(str,"%s",s); led.DispDigits((HDC)dc,rt0,str,7,_T("Led1")); } void CLEDView::OnHide() { // TODO: Add your command handler code here CClientDC dc(this); led.Hide((HDC)dc,"Led1"); } ii. CClientDC dc(this); ...... CRect rt0; rt0.SetRect(int(20*m_x),int(10*m_y),int(420*m_x),int(80*m_y)); CString s; s ="123-:1:."; led.Disp_mfc((CDC*)&dc,rt0,s,27,45,_T("Led1")); */

opencv+ 穿线法识别数码管数字

opencv+ 穿线法识别数码管数字,先进行图片较正,再进行识别,识别效果较好,有什么问题大家可以联系我

LED数码管0-9数据集.zip

利用OPENMV采集的LED数码管0-9数据集,每个数字200张左右72*130像素点的数据集,已经进行分类,可直接用于OPENMV的IDE进行训练训练,也可以用于其他方法的数据集

数码管数字数据集.zip

数码管数据集

OpenCV之七段数码管识别(含代码)

1 背景 利用opencv识别数码管,采用传统的穿线法,前提是利用深度学习目标检测的方法,在机柜中将数码管区域切割出来,然后再对切割出来的区域进行识别,判断数字是多少。切割出来的形状如图所示: 数码管各段表示为 2 识别思路 先对数码管进行灰度化和二值化,将数字变为255,背景变为0,然后利用穿线法,对abcdefg7个区域依次穿线,判断是否有255的值,有则表示该区域高亮,最后结...

ZONGXP的博客 1万+

基于tensorflow数码管识别(7段数字识别)

用python写的tensorflow框架下数码管的识别方法,包含训练代码和测试代码,可直接利用模型进行检测,如果效果不好,可以自己构建数据集训练

已分类的数码管数据集

已分类数码管数据集,数字1到数字9合计7000张,可用于对数码管数字分类的模型训练中,已事先命名,可自行设置训练集、验证集

数码管分割matlab,数字万用表(七段数码管)的图像识别(opencv实现) | 学步园

最近接触图像处理,要实现数字万用表数据的自动读取。我使用opencv+VC2005环境开发,OpenCV是Intel 开源计算机视觉库,它提供了强大的图像处理函数库。Opencv的介绍在这里太不多说,可以看看百度百科了解一下:http://baike.baidu.com/view/1343775.htm。万用表的识别过程是先提取摄像头的一帧数据,然后对这幅图像做处理:(1)提取摄像头的一帧数据//...

weixin_39630140的博客 757

用Keil5给CH552G编程:手把手配置8051开发环境+LED闪烁实战

本文详细介绍了如何使用Keil5为CH552G单片机配置8051开发环境,并完成LED闪烁实战。从获取必要软件、安装WCH器件库到创建工程、编写程序及烧录,手把手指导开发者避开常见陷阱,特别适合从STC转向CH552G的开发者。

weixin_30733003的博客 538
上一篇: Pandas读取的几个问题
下一篇: 调整Jupyter notebook的启动目录和浏览器
万哈哈
博客等级 码龄9年 9粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值