iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何创建opencv数字识别器
  • 612
分享到

如何创建opencv数字识别器

2023-06-26 05:06:09 612人浏览 八月长安
摘要

这篇文章主要介绍“如何创建OpenCV数字识别器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何创建opencv数字识别器”文章能帮助大家解决问题。一、什么是七段数码显示器  

这篇文章主要介绍“如何创建OpenCV数字识别器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何创建opencv数字识别器”文章能帮助大家解决问题。

一、什么是七段数码显示器

        七段LCD数码显示器有很多叫法:段码液晶屏、段式液晶屏、黑白笔段屏、段码LCD液晶屏、段式显示器、TN液晶屏、段码液晶显示器、段码屏幕、笔段式液晶屏、段码液晶显示屏、段式LCD、笔段式LCD等。

        如下图,每个数字都由一个七段组件组成。

如何创建opencv数字识别器

        七段显示器总共可以呈现 128 种可能的状态:

如何创建opencv数字识别器

        我们要识别其中的0-9,如果用深度学习的方式有点小题大做,并且如果要进行应用还有很多前序工作需要进行,比如要确认识别什么设备的,怎么找到数字区域并进行分割等等。

如何创建opencv数字识别器

二、创建opencv数字识别器

         我们这里进行使用空调恒温器进行识别,首先整理下流程。

        1、定位恒温器上的 LCD屏幕。

        2、提取 LCD的图像。

        3、提取数字区域

        4、识别数字。

 我们创建名称为recognize_digits.py的文件,代码如下。仅思路供参考(因为代码中的一些参数只适合测试图片)

# import the necessary packagesfrom imutils.perspective import four_point_transfORMfrom imutils import contoursimport imutilsimport cv2# define the dictionary of digit segments so we can identify# each digit on the thermostat DIGITS_LOOKUP = {(1, 1, 1, 0, 1, 1, 1): 0,(0, 0, 1, 0, 0, 1, 0): 1,(1, 0, 1, 1, 1, 1, 0): 2,(1, 0, 1, 1, 0, 1, 1): 3,(0, 1, 1, 1, 0, 1, 0): 4,(1, 1, 0, 1, 0, 1, 1): 5,(1, 1, 0, 1, 1, 1, 1): 6,(1, 0, 1, 0, 0, 1, 0): 7,(1, 1, 1, 1, 1, 1, 1): 8,(1, 1, 1, 1, 0, 1, 1): 9} # load the example imageimage = cv2.imread("example.jpg")## pre-process the image by resizing it, converting it to# graycale, blurring it, and computing an edge mapimage = imutils.resize(image, height=500)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)blurred = cv2.GaussianBlur(gray, (5, 5), 0)edged = cv2.Canny(blurred, 50, 200, 255) # find contours in the edge map, then sort them by their# size in descending ordercnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHaiN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)cnts = sorted(cnts, key=cv2.contourArea, reverse=True)displayCnt = None# loop over the contoursfor c in cnts:# approximate the contourperi = cv2.arcLength(c, True)approx = cv2.approxPolyDP(c, 0.02 * peri, True)# if the contour has four vertices, then we have found# the thermostat displayif len(approx) == 4:displayCnt = approxbreak # extract the thermostat display, apply a perspective transform# to itwarped = four_point_transform(gray, displayCnt.reshape(4, 2))output = four_point_transform(image, displayCnt.reshape(4, 2)) # threshold the warped image, then apply a series of morphological# operations to cleanup the thresholded imagethresh = cv2.threshold(warped, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (1, 5))thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel) # find contours in the thresholded image, then initialize the# digit contours listscnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)digitCnts = []# loop over the digit area candidatesfor c in cnts:# compute the bounding box of the contour(x, y, w, h) = cv2.boundingRect(c)# if the contour is sufficiently large, it must be a digitif w >= 15 and (h >= 30 and h <= 40):digitCnts.append(c) # sort the contours from left-to-right, then initialize the# actual digits themselvesdigitCnts = contours.sort_contours(digitCnts, method="left-to-right")[0]digits = [] # loop over each of the digitsfor c in digitCnts:# extract the digit ROI(x, y, w, h) = cv2.boundingRect(c)roi = thresh[y:y + h, x:x + w]# compute the width and height of each of the 7 segments# we are Going to examine(roiH, roiW) = roi.shape(dW, dH) = (int(roiW * 0.25), int(roiH * 0.15))dHC = int(roiH * 0.05)# define the set of 7 segmentssegments = [((0, 0), (w, dH)),# top((0, 0), (dW, h // 2)),# top-left((w - dW, 0), (w, h // 2)),# top-right((0, (h // 2) - dHC) , (w, (h // 2) + dHC)), # center((0, h // 2), (dW, h)),# bottom-left((w - dW, h // 2), (w, h)),# bottom-right((0, h - dH), (w, h))# bottom]on = [0] * len(segments) # loop over the segmentsfor (i, ((xA, yA), (xB, yB))) in enumerate(segments):# extract the segment ROI, count the total number of# thresholded pixels in the segment, and then compute# the area of the segmentsegROI = roi[yA:yB, xA:xB]total = cv2.countNonZero(segROI)area = (xB - xA) * (yB - yA)# if the total number of non-zero pixels is greater than# 50% of the area, mark the segment as "on"if total / float(area) > 0.5:on[i]= 1# lookup the digit and draw it on the imagedigit = DIGITS_LOOKUP[tuple(on)]digits.append(digit)cv2.rectangle(output, (x, y), (x + w, y + h), (0, 255, 0), 1)cv2.putText(output, str(digit), (x - 10, y - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.65, (0, 255, 0), 2) # display the digitsprint(u"{}{}.{} \u00b0C".format(*digits))cv2.imshow("Input", image)cv2.imshow("Output", output)cv2.waiTKEy(0)

关于“如何创建opencv数字识别器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 如何创建opencv数字识别器

本文链接: https://www.lsjlt.com/news/306915.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何创建opencv数字识别器
    这篇文章主要介绍“如何创建opencv数字识别器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何创建opencv数字识别器”文章能帮助大家解决问题。一、什么是七段数码显示器  ...
    99+
    2023-06-26
  • opencv+python识别七段数码显示器的数字(数字识别)
    目录一、什么是七段数码显示器二、创建opencv数字识别器一、什么是七段数码显示器         七...
    99+
    2024-04-02
  • Python OpenCV卡号识别如何识别
    本篇内容主要讲解“Python OpenCV卡号识别如何识别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python OpenCV卡号识别如何识别”吧!学在前面从本篇博客起,我们将实际完成几个...
    99+
    2023-06-09
  • 如何基于opencv实现简单的数字识别
    目录前言要解决的问题解决问题的思路总结前言 由于自己学识尚浅,不能用python深度学习来识别这里的数字,所以就完全采用opencv来识别数字,然后在这里分享、记录一下自己在学习过程...
    99+
    2024-04-02
  • Python-OpenCV中如何利用 KNN 算法识别手写数字
    手写数字数据集 MNIST 介绍为了保证完整性,从算法所用的训练数据讲起,训练数据是由 MNIST 手写数字组成的,MNIST 数据集来自美国国家标准与技术研究所,由来自 250 个不同人手写的数字构成,其中训练集包含 60000 张图片,...
    99+
    2023-06-22
  • C++OpenCV实战之手写数字识别
    目录前言一、准备数据集二、KNN训练三、模型预测及结果显示四、源码总结前言 本案例通过使用machine learning机器学习模块进行手写数字识别。源码注释也写得比较清楚啦,大家...
    99+
    2022-11-13
    C++ OpenCV手写数字识别 C++ OpenCV数字识别 OpenCV 数字识别
  • Opencv创建车牌图片识别系统方法详解
    目录前言包含功能软件版本软件架构参考文档效果图展示车牌检测过程图片车牌文字识别过程部分核心代码前言 这是一个基于spring boot + maven + opencv 实现的图像识...
    99+
    2024-04-02
  • python如何基于OpenCV模板匹配识别图片中的数字
    小编给大家分享一下python如何基于OpenCV模板匹配识别图片中的数字,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!程序目标单个数字模板:(这些单个模板是我自...
    99+
    2023-06-14
  • Python+Opencv实现数字识别的示例代码
    一、什么是数字识别?   所谓的数字识别,就是使用算法自动识别出图片中的数字。具体的效果如下图所示: 上图展示了算法的处理效果,算法能够自动的识别到LC...
    99+
    2024-04-02
  • OpenCV简单标准数字识别的完整实例
    在学习openCV时,看到一个问答做数字识别,里面配有代码,应用到了openCV里面的ml包,很有学习价值。 https://stackoverflow.com/questions/...
    99+
    2024-04-02
  • 如何实现Opencv图片的OCR识别
    小编给大家分享一下如何实现Opencv图片的OCR识别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、图片变换0、导入模块导入相关函数,遇到报错的话,直接pip...
    99+
    2023-06-06
  • Python-OpenCV实战:利用KNN算法识别手写数字
    目录前言手写数字数据集 MNIST 介绍基准模型——利用 KNN 算法识别手写数字改进模型1——参数 K 对识别手写数字精确度的影响改进模型2——训练数据量对识别手写数字精确度的影响...
    99+
    2024-04-02
  • 如何使用Python识别手势数字
    这篇文章主要介绍如何使用Python识别手势数字,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言谷歌出了一个开源的、跨平台的、可定制化的机器学习解决方案工具包,给在线流媒体(当然也可以用于普通的视频、图像等)提供了...
    99+
    2023-06-15
  • Python+OpenCV实现信用卡数字识别的方法详解
    目录一、模板图像处理 二、信用卡图片预处理一、模板图像处理 (1)灰度图、二值图转化 template = cv2.imread('C:/Users/bwy/Desktop...
    99+
    2024-04-02
  • python基于OpenCV模板匹配识别图片中的数字
    目录前言程序目标思路讲解代码讲解完整代码总结前言 本博客主要实现利用OpenCV的模板匹配识别图像中的数字,然后把识别出来的数字输出到txt文件中,如果识别失败则输出“读取失败”。...
    99+
    2024-04-02
  • Python如何利用opencv实现手势识别
    目录获取视频(摄像头)肤色检测轮廓处理前言: 网上搜到了一些关于手势处理的实验,我在这儿简单的实现一下,主要运用的知识就是opencv,python基本语法,图像处理基础知识。 获取...
    99+
    2024-04-02
  • java+opencv如何实现人脸识别功能
    这篇文章主要介绍了java+opencv如何实现人脸识别功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向...
    99+
    2023-06-15
  • 如何使用Python和创建简单语音识别引擎
    如何使用Python和创建简单语音识别引擎,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。语音识别是机器或程序识别口语中的单词和短语并将其转换为机器可读格式的能力。通常,这些...
    99+
    2023-06-16
  • C++ OpenCV如何实现身份证离线识别
    这篇文章将为大家详细讲解有关C++ OpenCV如何实现身份证离线识别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。OpenCV身份证离线识别技术的主要技术就是通过OpenCV找到身份证号码区域...
    99+
    2023-06-22
  • 如何使用PHP进行OCR识别和文字识别?
    随着数字化时代的不断发展,有大量的纸质文件需要进行数字化,以方便存储和检索。为了能够有效地进行数据转换,很多公司和个人选择了OCR技术(Optical Character Recognition,光学字符识别),它可以将扫描的纸质文档中的文...
    99+
    2023-05-21
    PHP OCR识别 文字识别
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作