文章目录

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

前言

基于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. android 多版本打包,Android build.gradle版本名打包配置的方法
  2. JQuery表单验证插件EasyValidator,超级简单易用!
  3. 第七章 综合练习 第四题
  4. StroyBoard中UICollectionView中添加Header和footer
  5. 利用python进行数据分析D1——ch02引言
  6. java 生成jar_java如何生成jar
  7. 【动态规划】方格取数 (ssl 1010)
  8. javacv 人脸检测_使用JavaCV进行手和手指检测
  9. java parallelstream_关于Java8 parallelStream并发安全的深入讲解
  10. 雷军:互联网思维本质上就是群众路线
  11. (王道408考研操作系统)第三章内存管理-第一节6-1:非连续分配管理方式之基本分页存储管理
  12. Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
  13. mysql数据库的函数_详解数据库_MySQL: mysql函数
  14. 表格如何excel在线转letex
  15. Feature pyramid networks for object detection
  16. RabbitMQ 概念
  17. 工业物联网技术体系包括哪些
  18. 双色OLED屏图片点阵转换工具(OledTools)
  19. 快速制作一个chrome插件
  20. PDF文件被加密问题

热门文章

  1. 由MTCNN关键点估计人头姿态
  2. 网络对战游戏开发 从零开始(一)
  3. 【iotdb】iotdb与grafana、spark的集成配置
  4. html js日历制作视频,时间轴、纯js日历特效
  5. system(“shutdown“)的用法
  6. fritzing导入元件_如何在fritzing中添加自己想要的器件
  7. 三维可视化的应用前景
  8. urllib3批量下载百度图片
  9. go mod 与 goproxy 的使用
  10. goland设置goproxy是参数时Environment时的设置方法