文章目录

  • 前言
  • 一、思路
  • 二、过程
  • 三、源码
  • 总结

前言

基于Halcon的OCR识别


一、思路

这个例子描述了半导体产品链的一个步骤,在生产线的前端,集成电路被印刷在晶圆上。要标记生产线中的单个晶圆,每个晶圆都会收到一个ID号,并用半字体打印。这个身份证号码在这里。
① 读取图像、设置界面
② 使用read_ocr_class_mlp算子指定分类器
③ for循环操作,黑白翻转图像、进行均值滤波、阈值处理、闭运算等操作
④ 再通过特征直方图,将字符的区域提取出来
⑤ 对区域字符进行识别提取
⑥ 最后释放资源

二、过程

三、源码

*
*这个例子描述了半导体产品链的一个步骤,在生产线的前端,集成电路被印刷在晶圆上。
*要标记生产线中的单个晶圆,每个晶圆都会收到一个ID号,并用半字体打印。这个身份证号码在这里。
*
* 读取图像
dev_update_off ()
dev_close_window ()
read_image (Image, 'ocr/wafer_semi_font_01')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_set_draw ('margin')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_line_width (2)
dev_set_colored (12)
*
* 读指定分类器
read_ocr_class_mlp ('SEMI_Rej.omc', OCRHandle)
NumImages := 10
for Index := 1 to NumImages by 1** Segment characters* 读入一张图像read_image (Image, 'ocr/wafer_semi_font_' + Index$'02')* Characters must be black-on-white, i.e., dark characters on a light background* 翻转图像,目前是黑底白字,而字符识别,需要的是白底黑字* 此翻转将图像变为白底黑字invert_image (Image, ImageInvert)* 下面两个算子一般一块使用* 对于mean_image的参数mask的大小,一般取需要的目标的大小的2倍;如目标是个圆形,直径为10,则mask的大小一般取20* 对于一些目标与背景的阈值对比不明显的图像,需要用到动态阈值分割,使用局部阈值来分割图像* 均值滤波* 对于背景和前景之间差别不大的图像,可以使用如下两个算子进行处理mean_image (Image, ImageMean, 31, 31)* 阈值处理,ImageMean一般为通过均值滤波处理之后的区域dyn_threshold (Image, ImageMean, RegionDynThresh, 7, 'light')* Characters are often dotted. Therefore, we first merge close dots* that belong to the same character just before calling the operator connection*闭运算,让一个字符能成为一个连通域,然后再进行connection计算,得到单个字符的连通域closing_circle (RegionDynThresh, RegionClosing, 2.0)connection (RegionClosing, ConnectedRegions)* Filter out characters based on two facts:* 1. Characters are printed in SEMI-12. Therefore we can make strong assumptions*    on the dimensions of the characters* 2. Characters are printed along a straight line* 通过特征直方图,将字符的区域提取出来,* 第一步提取使用的特征是宽和高* 第二步提取使用的特征是行坐标select_shape (ConnectedRegions, SelectedRegions1, ['height','width'], 'and', [29,15], [60,40])area_center (SelectedRegions1, Area, RowCh, ColumnCh)MedianRow := median(RowCh)select_shape (SelectedRegions1, Chars, 'row', 'and', MedianRow - 30, MedianRow + 30)** Read out segmented characters* 字符区域排序,同时获得各个字符的方形区域sort_region (Chars, CharsSorted, 'character', 'true', 'column')* 将字符区域转成矩形区域shape_trans (CharsSorted, Characters, 'rectangle1')* 字符识别do_ocr_multi_class_mlp (Characters, ImageInvert, OCRHandle, Class, Confidence)** 显示识别出来的字符dev_display (ImageInvert)dilation_rectangle1 (Characters, RegionDilation, 7, 7)dev_display (RegionDilation)area_center (CharsSorted, Area1, Row, Column)MeanRow := mean(Row)for IndexL := 0 to |Class| - 1 by 1disp_message (WindowHandle, Class[IndexL], 'image', MeanRow + 40, Column[IndexL] - 20, 'black', 'true')endforif (Index != NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif
endfor* 释放分类器资源
clear_ocr_class_mlp (OCRHandle)

总结

希望对你有所帮助,有所疑惑欢迎留言交流。

Halcon--OCR识别相关推荐

  1. Halcon OCR识别

    目录 1. 字符识别的基本流程 1.1 分类: 1.2 流程: 1.3 分类器:(线性/非线性) 1.3.1 过拟合/欠拟合 1.3.2 集合 1.3.3 解决过拟合方法 1.3.4 训练集: 1.3 ...

  2. Halcon编程实验-(4)车牌号数字+字母的识别【目的:OCR识别的应用】

    程序流程 1.图像采集,确定车牌区域 2.图像矫正,截取车牌区域 3.车牌号码提取 4.车牌号识别 5.车牌号显示 本次实验重点知识:OCR识别的应用 环境 一张含有车牌号的清晰无遮挡照片 原图: 相 ...

  3. 【华为云技术分享】传统OCR识别综述

    1      引言 1.1      什么是OCR 计算机文字识别,俗称光学字符识别,英文全称是Optical Charater Recognition(简称OCR),它是利用光学技术和计算机技术把印 ...

  4. python3调用OCR识别

    可以用工具,需要下载安装tesseract-ocr,地址:https://github.com/tesseract-ocr/tesseract/wiki,找对应版本,还可以从上面找到各种.traine ...

  5. Python改变生活 | OCR识别的花样使用

    这是Python改变生活系列的第四篇,在上文Python改变生活 | 轻松识别数百个快递单号_中讲了一个需求的解决办法,即用python识别条形码来获取快递单号. 该问题我一共想了两个方案,所以今天接 ...

  6. php调用搜狗ocr接口,搜狗ocr识别接口

    详细情况在代码中说明,如果不想自己使用TensorFlow,可使用下面接口 这是要识别的图片: image 最终识别的结果: This is a lot of 12 point text to tes ...

  7. 增值税发票OCR识别

    11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进 ...

  8. OCR识别-python版(一)

    需求:识别图片中的文字信息 环境:windows系统 开发语言:python 使用工具类:1.pyocr 2.PIL 3.tesseract-ocr 步骤: 1.pyocr 网络通直接使用命令: pi ...

  9. OCR识别缺点_福利:OCR大全

    点击上方蓝字 关注 星标★ 选择我的陪伴 大家在工作生活中是不是经常遇到文字识别的困难呢?比如识别提取图片或扫描件中的文字. 今天给大家介绍几款实用OCR小工具,可能对文字工作者.尤其是翻译特别有用. ...

  10. Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考...

    在自动化测试或者安全渗透测试中,Captcha验证码的问题经常困扰我们,还好现在OCR和AI逐渐发展起来,在这块解决上越来越支撑到位. 我推荐的几种方式,一种是对于简单的验证码,用开源的一些OCR图片 ...

最新文章

  1. SQL Server递归查询无限级分类
  2. DuiLib——xml节点元素属性介绍
  3. 【译】Private Image Analysis with MPC Training CNNs on Sensitive Data
  4. 首次使用eclipes运行项目报错“Java.lang.ClassNotFoundException”
  5. 高斯混合模型GMM的理解
  6. C++定义隐式转换函数,将类转换为内部的一个成员变量
  7. openfire修改服务器名称方法
  8. Qt文档阅读笔记-QLatin1String解析及文本段跨行赋值
  9. windows中运行qt5构建的程序提示 无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法
  10. dump mysql database,Mysql Database 逻辑备份: mysqldump
  11. C++安全方向(三):3.8 openssl单项散列章节总结
  12. 用R语言分析与预测员工离职
  13. 大学使用python 编辑器_Python数据分析|最多人用的代码编辑器推荐
  14. 编码表/转义字符/进制转换
  15. java小游戏程序的编写
  16. visio导出图片模糊的解决方案
  17. C语言|博客作业05
  18. VirusTotal
  19. Policy Evaluation收敛性、炼丹与数学家
  20. 权威解释----如何选择羽毛球?(摘自《羽毛球竞赛规则问答》北京体育大学出版社

热门文章

  1. 如何玩转adobe photoshop 2023 beta的ai绘画
  2. 伪元素(pseudo-elements)
  3. 项目复盘的完整步骤和高效方法
  4. 雅克比矩阵(Jacobian Matrix)在正运动学中的应用
  5. 【MIMIC-IV/pytorch实战】基于word2vec、transformer进行英文影像报告文本分类
  6. okhttp的MediaType.parse属性
  7. MySQL主键设计盘点
  8. 利用芝麻信用的来人脸识别-实名认证
  9. QT文件编码格式问题
  10. 拿捏SQL数据分析:从基础破冰到面试题解