基于opencv的数字识别系统

本文介绍了基于OpenCV实现数字识别的过程,包括图像预处理、数字轮廓提取、阈值选择、轮廓过滤、数字裁剪和KNN分类。通过自动化测试优化了识别性能,解决了燃油泵读数的图像识别问题。
摘要由CSDN通过智能技术生成

一、目的
想要实现的功能:帮助我们在泵中扫描燃油,并在应用程序中输入燃油信息。

所需技术:①python程序对于拍摄的汽油泵的图像,尝试从中读取数字。——opencv实现。②先使用python对其进行原型设计,然后将代码转换成C++以在ios应用程序上运行。

        但是我不会部署在移动端,对第二个不做研究。

目标:需要考虑两个问题:

可以从图像中分离出数字吗?——用opencv图像阈值法来查找数字,进行裁剪轮廓
可以确定图像代表哪个数字吗?——KNN进行分类训练。
二、图像中分离出数字
思路:利用简单的图像阈值法来查找数字。

图像阈值法:将图像转换为灰度,然后说灰度值小于某个常数的任何像素,则该像素为一个值,否则为另一个。最后,得到的二进制图像只有两种颜色,在大多数情况下只是黑白图像。一幅图通常包含目标物体还有各种背景和噪声,想要得到目标物体,就要设置一个阈值,用阈值将图像的像素分割成两部分。

        但是阈值的值如何确定呢?——五、自动化可以解决阈值的选择

        这个概念在OCR应用中非常有效,但是主要问题是决定对该阈值使用什么。我们可以选择一些常量,也可以使用OpenCV选择其他一些选项。我们可以使用自适应阈值而不是使用常数,这将使用图像的较小部分并确定要使用的不同阈值。这在具有不同照明情况的应用中特别有用,特别是在扫描气泵中。

设置好阈值后,使用opencv中的findcontours方法查找图像中连接了白色像素部分的区域。绘制轮廓后,便可以裁剪出这些区域并确定它们是否可能是数字以及是什么数字。

2.1 图像处理流程
这是我在测试图像处理中使用的原始图像。它有一些眩光点,但是图像相当干净。让我们逐步完成获取此源图像的过程,并尝试将其分解为单个数字。

在代码中主要对应于playground.py函数,这个相当于完整的代码,会输出最后的预测结果,其中图像分割部分主要调用的是frameProcessor.py文件中的函数。

原始图片

 2.1.1 图像准备
在开始图像处理流程之前,我们决定先调整一些图像属性,然后再继续。这有点试验和错误,但注意到,当我们调整图像的曝光度时,可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值