新手上路记本人做的第一个图像处理实验
喷码字符识别流程:读图——滤波——二值化——腐蚀——分割——ANN训练——识别
本例程训练类别14类(0-9,C、L、冒号、空格),每类样本数量50张
搭配环境:VS2017+opencv3.4.1
语言:C++
由于工程有点大,下面进行简单介绍,详情见附件(附有完整的程序,实验报告及论文)
程序运行效果:


图像预处理:
1.读取图像

Mat pSrcImg = imread("D:\\1-文件资料\\5-字符检测\\识别图片\\source3.bmp", 0);//从本地读取灰度图
imshow("原图", pSrcImg);

2.滤波

Mat dst;blur(pSrcImg,dst,Size(7,7));imwrite(FilePath+"remove1.bmp", dst);imshow("remove1", dst);

3.二值化

Mat pDecImg;
pDecImg.create(pSrcImg.size(), pSrcImg.type()); //1通道
pDecImg = pSrcImg.clone();
threshold(pSrcImg, pDecImg,0,255,cv::THRESH_OTSU);
imshow("binary1", pDecImg);
imwrite(FilePath+"binary1.bmp", pDecImg);

4.腐蚀去噪

Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));Mat out1;dilate(pDecImg, out1, element);imshow("腐蚀", out1);

5.图像分割

fenge(out1, 60, FilePath, ".bmp", 110);//分割函数原型及参数解释见附件

分割在本项目中是重点和难点,一旦分割错误,整张图片的识别也会出现错误。本程序的分割存在一些BUG,可根据个人需要自行修改或重新编写。

6.将分割后的图像统一大小后保存(后续进行分类)

Mat imagErode[24], readfile[24];string Pathfile, PathfileResize;int Namefile = 1, str1=1;for (int i = 0; i < 24; i++){Pathfile = FilePath + to_string(Namefile) + ".bmp";PathfileResize = ResizeFilePath + to_string(Namefile) + ".bmp";Namefile++;readfile[i] = imread(Pathfile, 0);resize(readfile[i], imagErode[i],Size(14,28));imwrite(PathfileResize, imagErode[i]);}

将图片统一大小为宽14长28(大小可更改),然后就可以分类收集样本,此例收集样本类别14,每类图片数量50张。收集完样本就要先进行ANN训练,再识别。训练是另外单独的工程,每次识别时调用训练好的.xml文件,就不需要每次都重新训练。训练程序在附件给出。


7.识别(对整张图片分割后的字符)

Mat Fengeimg[40], Resizeimage[40];string Pathfile1,PathfileResize;cout<<"识别结果为:"<<endl;for(int i = 0; i< CharactersNumber1+ CharactersNumber2; i++){Pathfile1 = FilePath + to_string(i+1) + ".bmp";PathfileResize = FilePath +"resize\\" + to_string(i + 1) + ".bmp";Fengeimg[i] = imread(Pathfile1, 0);resize(Fengeimg[i], Resizeimage[i], Size(14, 28));imshow("字符"+to_string(i+1), Resizeimage[i]);imwrite(PathfileResize, Resizeimage[i]);predictann1(Resizeimage[i]);//识别函数,传入参数为要识别的图像if (i == CharactersNumber1-1) cout<<endl;}

ANN训练
训练代码见附件https://download.csdn.net/download/weixin_41303441/10806458
原来我设置的下载积分为1,现在不知道为什么涨了这么多,下面附上百度云盘的链接
链接:https://pan.baidu.com/s/1_LyXOOWinHsh5jifyFpWNQ
提取码:6tpr

基于OpenCV 人工神经网络的喷码字符识别(C++)相关推荐

  1. 基于BP人工神经网络的手写英文字符识别

    0 前言 基于Matlab-R2009a实现BP神经网络来训练和识别26个英文字母. 1 程序 alphabet_train.m如下所示: clear clc [alphabet,targets]=p ...

  2. 基于opencv的手写数字字符识别

    摘要 本程序主要参照论文,<基于OpenCV的脱机手写字符识别技术>实现了,对于手写阿拉伯数字的识别工作.识别工作分为三大步骤:预处理,特征提取,分类识别.预处理过程主要找到图像的ROI部 ...

  3. 【opencv机器学习】基于SVM和神经网络的车牌识别

    基于SVM和神经网络的车牌识别 深入理解OpenCV:实用计算机视觉项目解析 本文用来学习的项目来自书籍<实用计算机视觉项目解析>第5章Number Plate Recognition 提 ...

  4. 银行卡号识别python_银行卡号识别 基于 OpenCV 光学字符识别(OCR)

    银行卡号识别 基于 OpenCV 光学字符识别(OCR) 今天的博客文章是我们最近关于光学字符识别(OCR)和计算机视觉的系列的延续. 在之前的博客文章中,我们学习了如何安装Tesseract二进制文 ...

  5. 基于人工神经网络的不规则小天体引力场建模

    学号: 2021211127 院系:航天航空学院 姓名:薛 锋 丰 §01 前  言   人工神经网络往往具有万能拟合器的作用,因此对于某些复杂的.难以用常规的数学手段进行建模的物体,都可采用神经网络 ...

  6. MATLAB实现数字识别系统,基于人工神经网络的MATLAB手写数字识别系统

    <基于人工神经网络的MATLAB手写数字识别系统>由会员分享,可在线阅读,更多相关<基于人工神经网络的MATLAB手写数字识别系统(8页珍藏版)>请在人人文库网上搜索. 1.基 ...

  7. numpy找到矩阵中不同元素的种类_基于NumPy和图像分类的人工神经网络构建

    基于NumPy和图像分类的人工神经网络构建 本文利用NumPy系统在Python中构建人工神经网络,以便为Fruits360数据集执行图像分类应用程序. 本文提及的所有内容(即图像和源代码,不包括Fr ...

  8. 基于人工神经网络的识别C语言,实验一基于人工神经网络的数码识别.doc

    实验一基于人工神经网络的数码识别 <人工智能导论>课程 基于人工神经网络的数码识别 班级:计1103学号:201107010330姓名:贾梦洁 成绩评定:评阅老师:日 期: 实验报告正文一 ...

  9. C++从零实现简单深度神经网络(基于OpenCV)

    代码地址如下: http://www.demodashi.com/demo/11138.html 一.准备工作 ####需要准备什么环境 需要安装有Visual Studio并且配置了OpenCV.能 ...

  10. 基于神经网络的人工智能,人工神经网络心得体会

    1.人工智能的学习思路是什么? 要学习人工智能,就要先了解清楚人工智能是什么.人工智能就是制造智能的机器,更特指制作人工智能的程序.人工智能模仿人类的思考方式使计算机能智能的思考问题,人工智能通过研究 ...

最新文章

  1. java的4种代码块
  2. 【Git】Git-常用命令备忘录(三)
  3. FPGA硬件学习基础知识点总结(1)
  4. 【HTML+CSS网页设计与布局 从入门到精通】第12章-CSS
  5. php+oracle新增数据类型,Oracle 修改某个字段的数据类型三种方式
  6. MySql中not in的优化
  7. xp IIS5配置mvc3运行环境
  8. day01_启动程序装载器 IPL
  9. 1053 Path of Equal Weight (30 分)一般树的遍历 DFS+vector容器+sort排序
  10. CTeX书写规范、WinEdt编写XeLaTeX、数模格式编写总结
  11. Excel列宽在哪里设置?Excel怎么设置行高和列宽
  12. 从数学归纳法到递归算法
  13. 信息安全毕设论文选题推荐
  14. 平方数之和【leetcode 633】
  15. 笔记丨利用gitee创建个人博客网站
  16. AlphaFold2: Highly accurate protein structure prediction with AlphaFold笔记
  17. Not Assigning
  18. 小程序源码图片列表,图片下载
  19. AliCDN,盛开在云端的花朵
  20. 计算机基础表格模拟题,4月全国网络统考资料《计算机应用基础》模拟题及参考答案——电子表格...

热门文章

  1. PPT常见的几种排版技巧,你都掌握了吗?
  2. 抢红包插件实现原理浅析
  3. mybatis对象包含list类型属性的resultMap配置
  4. HTML5-fishc 学习笔记
  5. edius多机位多轨编辑
  6. 微信 - 微信语音转发好友 / 朋友圈方法
  7. 【Pytorch with fastai】第 1 章:你的深度学习之旅
  8. unity多人联机插件_Unity网络系统插件,打通游戏联网任督二脉
  9. AxureRP初体验
  10. cad导出pdf_CAD批量打印插件神器CAD导出PDF插件