返回顶部
首页 > 资讯 > 后端开发 > Python >OpenCV简单标准数字识别的完整实例
  • 276
分享到

OpenCV简单标准数字识别的完整实例

2024-04-02 19:04:59 276人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

在学习OpenCV时,看到一个问答做数字识别,里面配有代码,应用到了openCV里面的ml包,很有学习价值。 https://stackoverflow.com/questions/

学习OpenCV时,看到一个问答做数字识别,里面配有代码,应用到了openCV里面的ml包,很有学习价值。

https://stackoverflow.com/questions/9413216/simple-digit-recognition-ocr-in-opencv-python#


import sys
import numpy as np
import cv2
 
im = cv2.imread('t.png')
im3 = im.copy()
 
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)   #先转换为灰度图才能够使用图像阈值化
 
thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)  #自适应阈值化
 
##################      Now finding Contours         ###################
# 
image,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHaiN_APPROX_SIMPLE)
#边缘查找,找到数字框,但存在误判
 
samples =  np.empty((0,900))    #将每一个识别到的数字所有像素点作为特征,储存到一个30*30的矩阵内
responses = []                  #label
keys = [i for i in range(48,58)]    #48-58为ASCII码
count =0
for cnt in contours:
    if cv2.contourArea(cnt)>80:     #使用边缘面积过滤较小边缘框
        [x,y,w,h] = cv2.boundingRect(cnt)   
        if  h>25 and h < 30:        #使用高过滤小框和大框
            count+=1
            cv2.rectangle(im,(x,y),(x+w,y+h),(0,0,255),2)
            roi = thresh[y:y+h,x:x+w]
            roismall = cv2.resize(roi,(30,30))
            cv2.imshow('nORM',im)
            key = cv2.waiTKEy(0)
            if key == 27:  # (escape to quit)
                sys.exit()
            elif key in keys:
                responses.append(int(chr(key)))
                sample = roismall.reshape((1,900))
                samples = np.append(samples,sample,0)
            if count == 100:        #过滤一下过多边缘框,后期可能会尝试极大抑制
                break
responses = np.array(responses,np.float32)
responses = responses.reshape((responses.size,1))
print ("training complete")
 
np.savetxt('generalsamples.data',samples)
np.savetxt('generalresponses.data',responses)
#
cv2.waitKey()
cv2.destroyAllwindows()

训练数据为:

测试数据为:

使用openCV自带的ML包,KNearest算法


 
import sys
import cv2
import numpy as np
 #######   training part    ############### 
samples = np.loadtxt('generalsamples.data',np.float32)
responses = np.loadtxt('generalresponses.data',np.float32)
responses = responses.reshape((responses.size,1))
 
model = cv2.ml.KNearest_create()
model.train(samples,cv2.ml.ROW_SAMPLE,responses)
 
 
def getNum(path):
    im = cv2.imread(path)
    out = np.zeros(im.shape,np.uint8)
    gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
    
    #预处理一下
    for i in range(gray.__len__()):
        for j in range(gray[0].__len__()):
            if gray[i][j] == 0:
                gray[i][j] == 255
            else:
                gray[i][j] == 0
    thresh = cv2.adaptiveThreshold(gray,255,1,1,11,2)
     
    image,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    count = 0 
    numbers = []
    for cnt in contours:
        if cv2.contourArea(cnt)>80:
            [x,y,w,h] = cv2.boundingRect(cnt)
            if  h>25:
                cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)
                roi = thresh[y:y+h,x:x+w]
                roismall = cv2.resize(roi,(30,30))
                roismall = roismall.reshape((1,900))
                roismall = np.float32(roismall)
                retval, results, neigh_resp, dists = model.findNearest(roismall, k = 1)
                string = str(int((results[0][0])))
                numbers.append(int((results[0][0])))
                cv2.putText(out,string,(x,y+h),0,1,(0,255,0))
                count += 1
        if count == 10:
            break
    return numbers
 
numbers = getNum('1.png')

总结

到此这篇关于OpenCV简单标准数字识别的文章就介绍到这了,更多相关OpenCV标准数字识别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: OpenCV简单标准数字识别的完整实例

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

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

猜你喜欢
  • OpenCV简单标准数字识别的完整实例
    在学习openCV时,看到一个问答做数字识别,里面配有代码,应用到了openCV里面的ml包,很有学习价值。 https://stackoverflow.com/questions/...
    99+
    2024-04-02
  • 如何基于opencv实现简单的数字识别
    目录前言要解决的问题解决问题的思路总结前言 由于自己学识尚浅,不能用python深度学习来识别这里的数字,所以就完全采用opencv来识别数字,然后在这里分享、记录一下自己在学习过程...
    99+
    2024-04-02
  • python+opencv实现的简单人脸识别代码示例
    # 源码如下: #!/usr/bin/env python #coding=utf-8 import os from PIL import Image, ImageDraw import cv def...
    99+
    2022-06-04
    示例 代码 简单
  • Python3+OpenCV实现简单交通标志识别流程分析
    目录一、图像处理二、HOG特征提取三、模型训练四、交通标志识别及实验测试由于该项目是针对中小学生竞赛并且是第一次举行,所以识别的目标交通标志仅仅只有直行、右转、左转和停车让行。 数据...
    99+
    2024-04-02
  • Python+Opencv实现数字识别的示例代码
    一、什么是数字识别?   所谓的数字识别,就是使用算法自动识别出图片中的数字。具体的效果如下图所示: 上图展示了算法的处理效果,算法能够自动的识别到LC...
    99+
    2024-04-02
  • PyTorch简单手写数字识别的实现过程
    目录一、包导入及所需数据的下载关于数据集引入的改动二、进行数据处理变换操作三、数据预览测试和数据装载四、模型搭建和参数优化关于模型搭建的改动总代码:测试总结具体流程: ① 导入相应...
    99+
    2024-04-02
  • 基于OpenCV和Gradio实现简单的人脸识别详解
    目录环境配置实验原理程序设计1.上传图片2.人脸识别3.绘制方框4.保存预测结果5.最后运行gradio的lauch完整代码环境配置 gradio 安装 pip install gr...
    99+
    2023-05-14
    OpenCV Gradio实现人脸识别 OpenCV Gradio人脸识别 OpenCV Gradio
  • 基于OpenCV和Gradio怎么实现简单的人脸识别
    今天小编给大家分享一下基于OpenCV和Gradio怎么实现简单的人脸识别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。环境...
    99+
    2023-07-05
  • Python-OpenCV实现简单的颜色识别(对红色和蓝色识别并输出)
    摄像头识别红色和蓝色并框选,当该颜色为摄像头屏幕上大多数颜色时打印出该颜色的名称 新手学习笔记,第一次写博客,若有错误还请指出( ~`_` )~ 1.调包 import cv2import numpy as npfrom matpl...
    99+
    2023-09-08
    python opencv 计算机视觉
  • PyTorch简单手写数字识别的实现过程是怎样的
    本篇文章给大家分享的是有关PyTorch简单手写数字识别的实现过程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、包导入及所需数据的下载torchvision包的主要...
    99+
    2023-06-25
  • C#基于TCP实现简单游戏客户端的完整实例
    目录一、界面二、代码1.播放音频2.播放图片3.登录和退出游戏4.命令交互5.信息展示6.最终代码三、效果四、总结五、参考一、界面 左上方播放音频按钮和停止播放下面是图片展示再下面...
    99+
    2024-04-02
  • Python中如何实现简单人脸识别的示例
    这篇文章给大家分享的是有关Python中如何实现简单人脸识别的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、库介绍opencv,face_recognition,numpy,以及dlib注意:安装open...
    99+
    2023-06-14
  • Python+OpenCV实现信用卡数字识别的方法详解
    目录一、模板图像处理 二、信用卡图片预处理一、模板图像处理 (1)灰度图、二值图转化 template = cv2.imread('C:/Users/bwy/Desktop...
    99+
    2024-04-02
  • PyTorch实现手写数字识别的示例代码
    目录加载手写数字的数据数据加载器(分批加载)建立模型模型训练测试集抽取数据,查看预测结果计算模型精度自己手写数字进行预测加载手写数字的数据 组成训练集和测试集,这里已经下载好了,所以...
    99+
    2024-04-02
  • Android为应用添加数字角标的简单实现
    角标,英语是badge,也就是“徽章,像章,奖章; 象征,标记”的意思。 效果图 可以看到图中的环信单聊这个app右上角的红色的圆圈,里面有6这个数字的,就...
    99+
    2022-06-06
    Android
  • Python三十行代码实现简单人脸识别的示例代码
    一、库介绍 opencv,face_recognition,numpy,以及dlib 注意: 安装opencv速度可能过慢,需要更换国内镜像源,参考:https://www.jb...
    99+
    2024-04-02
  • java版简单的猜数字游戏实例代码
    游戏简述游戏涉及到game和player两个对象,game会产生介于0-9之间的随机数,下面看看详细的实现过程。程序逻辑:      1.GameLauncher这个类带有main()方法,...
    99+
    2023-05-31
    java 猜数字 游戏
  • 数据库字段的最佳实践:确保数据完整性、准确性和性能
    使用数据类型限制:为每个字段指定适当的数据类型(如整数、字符串、日期等),以防止非法值的插入。 设置主键和外键:为主键字段定义唯一约束,并为外键字段定义引用完整性约束,以确保记录之间的关系一致性。 使用非空约束:指定允许空值的字段,有助...
    99+
    2024-03-12
    数据完整性
  • caffe的python接口之手写数字识别mnist实例
    目录引言一、数据准备二、导入caffe库,并设定文件路径二、生成配置文件三、生成参数文件solver四、开始训练模型五、完成的python文件引言 深度学习的第一个实例一般都是mni...
    99+
    2024-04-02
  • 超详细PyTorch实现手写数字识别器的示例代码
    前言 深度学习中有很多玩具数据,mnist就是其中一个,一个人能否入门深度学习往往就是以能否玩转mnist数据来判断的,在前面很多基础介绍后我们就可以来实现一个简单的手写数字识别的网...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作