欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】

程序员文章站 2022-07-04 16:03:56
...

程序及流程

1.图像矫正
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】
2.对文字连通域进行区域提取分离
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】
3.制作字符集,既形成trf文件,字符图像与字符进行关联
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】
4.神经网络训练过程,生成omc文件
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】
5.利用训练结果中的omc文件,识别并显示
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】

环境

自己拍的一张图片,无其他影响因素
Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】

相关代码

//创建窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

//文件读取
read_image (Image, 'X:/Halcon/汉字识别.jpg')

//预处理
rgb1_to_gray (Image, GrayImage)
scale_image (GrayImage, ImageScaled, 1.97674, -213)//图像线性变换

//区域图像分割提取
threshold (ImageScaled, Regions, 0, 2)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','width','height'], 'and', [0,149.75,155.33], [53299.5,225.89,210.15])

//图像矫正
union1 (SelectedRegions, RegionUnion)//合并所有区域
shape_trans (RegionUnion, RegionTrans, 'rectangle2') //变换区域形状,rectangle2:最小外接矩形
orientation_region (RegionTrans, Phi)//区域方向计算,得到弧度Phi
area_center (RegionTrans, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Phi , Row, Column, rad(180), HomMat2D)
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')//区域矫正操作
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')//图像矫正操作

//对文字连通域进行区域提取分离
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)//对矫正后的图形进行区域裁剪
rgb1_to_gray (ImageReduced, GrayImage1)
threshold (GrayImage1, Regions1, 0, 80)
connection (Regions1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 7803.64, 14949.4)
sort_region (SelectedRegions1, SortedRegions, 'first_point', 'true', 'column')//连通域排序操作
count_obj (SelectedRegions1, Number)//获得连通域数量,既文字数量

//制作字符集,既形成trf文件,字符图像与字符进行关联
words :=['编','著','罗','超']
TrainFile :='X://Halcon//word.trf'
for Index := 1 to Number by 1
    select_obj (SortedRegions, SingleWord, Index)//拿出单独连通域
    append_ocr_trainf (SingleWord, ImageAffineTrans, words[Index-1],TrainFile)//关联文字连通域与字符
endfor

//生成omc文件
FontFile :='X://Halcon//word.omc'
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)

//神经网络训练过程------------------------
*创建神经网络分类器
create_ocr_class_mlp (10, 30, 'constant', 'default', CharacterNames, 80, 'none', 10, 42, OCRHandle)
*训练分类器
trainf_ocr_class_mlp (OCRHandle, TrainFile, 200, 1, 0.01, Error, ErrorLog)
*保存omc文件
write_ocr_class_mlp (OCRHandle, FontFile)
*清除句柄
clear_ocr_class_mlp (OCRHandle)
//----------------------------------------

*识别文字
read_ocr_class_mlp (FontFile, OCRHandle1)//读取训练参数(omc文件)
do_ocr_multi_class_mlp (SortedRegions, ImageReduced, OCRHandle1, Class, Confidence)//ocr识别操作,输入图形为矫正裁剪过的图像

//显示识别结果
dev_display (ImageAffineTrans)
dev_display (SortedRegions)
for i := 1 to |Class| by 1
disp_message (WindowHandle,Class[i-1], 'image', Row+200 , Column+ i*200, 'blue', 'true')   
endfor

实验结果

Halcon编程实验-(5)汉字识别【目的:OCR识别训练应用】

相关标签: Halcon