实例图片

大体步骤:1.读取图片

                  2.图像预处理(阈值分割,提取标签部分,缩小处理区域)

                 3.将标签区域的最小外接矩形,从原图中剪切

                 4.图像旋转,将文字摆正 

                 5.水平分割

               6.局部阈值分割,提取出ROI

               7.创建词典(之所以不直接使用字符模板直接识别,是因为,直接识别的话,字母O会被识别为数字0 等等异常识别,使用字典会比较准确识别)

               8.读取识别模板

              9.使用字典进行识别

 关键点:字典    局部阈值分割    水平分割  

注意点:halcon字符识别自带模板是基于白底黑字  ,输入的图像要进行转换  保证是二值化图像 并且是白底黑字,

如果是黑底白字,使用算子 invert_image  进行图像翻转。

dev_close_window()
read_image (Image, 'label/label_01.png')
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)
dev_set_window (WindowHandle)
dev_display (Image)
*固定阈值分割
threshold (Image, Region, 128, 230)
*区域连通
connection (Region, ConnectedRegions)
*区域筛选
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 47000, 59000)
*开运算
opening_circle (SelectedRegions, RegionOpening, 4)
*回去最小外接矩形
shape_trans (RegionOpening, RegionTrans, 'rectangle2')
*水平分割
text_line_orientation (RegionTrans, Image, 25, -0.523599, 0.523599, OrientationAngle)
*创建矩阵但也
hom_mat2d_identity (HomMat2DIdentity)
*求变换矩阵关系
hom_mat2d_rotate (HomMat2DIdentity, -OrientationAngle, 0, 0, Deskew)
*原图变化 旋转
affine_trans_image (Image, ImageAffineTrans, Deskew, 'constant', 'false')
*区域旋转
affine_trans_region (RegionTrans, RegionAffineTrans, Deskew, 'nearest_neighbor')
*外接矩形参数
smallest_rectangle1 (RegionAffineTrans, Row1, Column1, Row2, Column2)
*图像截取
reduce_domain (ImageAffineTrans, RegionAffineTrans, ocrimage)
*通过局部平均值和标准偏差进行阈值图像。试用场合不均匀的照明或噪声的图像
*第一个输入参数:输入图像
*第二个输出参数:分割后的区域
*第三个输人参数:均值和标准差的掩码宽度
*第四个输入参数:均值和标准差的掩码高度
*第五个输入参数:标准差因子
*第六个输入参数:最小灰度值和均值之差
*第七个输入参数:提取区域的类型,是亮的区域,或暗的区域,或相似区域,或不相似区域
var_threshold (ocrimage, Region1,40, 40, 0.8, 10, 'dark')
connection (Region1, ConnectedRegions1)
*水平分割
partition_dynamic (ConnectedRegions1, Split, 21, 40)
*选择文字整体
select_shape (Split, Characters, ['width','height'], 'and', [10,20], [30,50])
*选择单词部分
select_shape (Characters, word_image, 'row', 'and', 0,Row1+80)
*选择日期部分
select_shape (Characters, date_image, 'row', 'and', Row1+80, 500)
*排序
sort_region (word_image, SortedRegions, 'character', 'true', 'row')
*获取区域参数 面积 行 列
area_center (SortedRegions, Area, Row, Column)
Column[|Column|]:=888
gen_empty_obj (word)
text:=''
text_word_all:=''
text_date_all:=''
*创建词典
create_lexicon ('label', ['BEFORE','BEST','END'], LexiconHandle)
*读取模型
read_ocr_class_mlp ('Industrial_NoRej', OCRHandle)
for i := 1 to |Column|-1 by 1
select_obj (word_image, ObjectSelected, i)
concat_obj (word, ObjectSelected, word)
if (i==|Column| or (Column[i]-Column[i-1])>30)
*开始识别
*第一个参数 要识别的图
*第二个参数 原图
*第六个参数表示误差范围,既和字典中单词对比 长度误差范围
do_ocr_word_mlp (word, ocrimage, OCRHandle, '<label>', 3, 2, Class, Confidence, text_1, Score)
text:=text+' '+text_1
gen_empty_obj (word)
endif
endfor
text_word_all:=text
*下面开始识别日期部分
*排序
sort_region (date_image, SortedRegions1, 'character', 'true', 'row')

*使用正则表达式识别
*^ 开始 ()子表达式 [] 标记一个中括号表达式的开始 | 指明两项之间的一个选择
t:='^([0-2][0-9]|30|31)/(0[1-9]|10|11|12)/0[0-5]$'
do_ocr_word_mlp (SortedRegions1, ocrimage, OCRHandle, t, 10, 5, Class1, Confidence1, Word, Score1)
text_date_all:=Word
*清除窗体
dev_clear_window ()
dev_display (ocrimage)
*设置多颜色显示
dev_set_colored (6)
dev_display (word_image)
dev_display (date_image)
*设置字体
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
*在窗体中显示文字
disp_message (WindowHandle,'字母部分:'+ text_word_all, 'image', 10, 10, 'red', 'true')
disp_message (WindowHandle,'日期部分:'+ text_date_all, 'image', 40, 40, 'green', 'true')

运行结果

halcon学习_字符识别1的更多相关文章

  1. 跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量 * This example program demonstrates the basic usage of a fuzz ...

  2. 跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距

    跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距 This example program demonstrates the basic usage of a circular meas ...

  3. 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...

  4. 跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码

    跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手-打开新的Image Acquisitio ...

  5. 跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量 Lead Measurement: Example for the application of the measure object in ...

  6. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  7. Linux操作系统学习_操作系统是如何工作的

    实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...

  8. HALCON学习-下载、安装

    下载地址: 官网 HALCON学习网 安装: 直接安装文件halcon-12.0-windows-x86.exe 破解,汉化: 在HALCON学习网中有Licence文件“license_suppor ...

  9. HALCON学习-资料

    HALCON学习网: http://www.ihalcon.com/ 学习资料推荐博客: http://k594081130.blog.163.com/blog/static/218359013201 ...

随机推荐

  1. 06_Tutorial 6: ViewSets & Routers 视图集与路由器

    1.Tutorial 6: ViewSets & Routers 视图集与路由器 0.文档 https://q1mi.github.io/Django-REST-framework-docum ...

  2. 智能灯控(基于ZigBee)

    时间:2017年12月 阶段:大二上学期 背景:单片机原理与应用课设 名称:智能灯控 摘要 本系统实现了多方式控灯功能,有按键控灯.串口指令控灯.点对点无线射频控灯.AI模式控灯.其中AI模式控灯是通 ...

  3. Soda Theme sublime 自定义编辑器主题

    1.Soda ThemeSublime Text 3中较为常用的一款自定义编辑器主题,用过的人都说好.Soda Theme包含代码着色.标签.图标,拥有light和dark两种颜色主题便于用户在不同时 ...

  4. 081_使用 awk 编写的 wc 程序

    #!/bin/bash#自定义变量 chars 变量存储字符个数,自定义变量 words 变量存储单词个数#awk 内置变量 NR 存储行数#length()为 awk 内置函数,用来统计每行的字符数 ...

  5. 使用 Java 创建聊天客户端-2

    1.项目截图 java聊天核心代码: MyJavaChatClient ================================================================ ...

  6. wepy代码知识点

    index-page <style lang="less"> .index-nood-modal { width: 100vw; height: 100vh; posi ...

  7. 【原创】go语言学习(四)流程控制

    目录: 1.if else语句块 2.for语句 3.switch语句 if else语句块 1.基本语法 if condition { //do something } if statement; ...

  8. P3313 [SDOI2014]旅行——树链剖分+线段树(动态开点?)

    P3313 [SDOI2014]旅行 一棵树,其中的点分类,点有权值,在一条链上找到一类点中的最大值或总和: 树链剖分把树变成链: 把每个宗教单开一个线段树,维护区间总和和最大值: 宗教很多,需要动态 ...

  9. python快捷键的使用【摘抄】

    接触python有些快捷键还不熟悉,搜索到下面这个文章很好的转发和摘抄了,感谢作者的用心分析 摘抄来源:https://www.cnblogs.com/haiyan123/p/7170593.html ...

  10. topic costmap

    name: '/move_base/global_costmap/costmap', messageType: "nav_msgs/OccupancyGrid", 这个是全局地图, ...