HALCON OCR训练文件生成步骤

xiaoxiao2021-02-28  18

步骤框图:

1segmentation:threshold等方法将所要的区域筛选出来。

Closing_retangle1这个算子可以将区域按行分割成子区域(此时输出区域的元素个数为1,是一个整体)。

然后经过connection算子运算可以将被处理过的区域按行分割成若干个子区域

Intersection:By using intersection with the original segmentationand the selected line as input, the characters for training are returned

2、打开一个training file (.trf)文件,然后将区域用append_ocr_trainf算子将分割好的区域写入到文件

样本图片:

案例代码(生成training file .trf的代码):

    第一步:

*选取的行数为第三行

TrainingLine := 3

*通过灰度值选出字符所在的区域

threshold (Image, Region, 0, 125)

*将字符所在的区域按行划分后输出到RegionClosing区域(但是此时RegionClosing区域的元素个数为1,是一个整体)

closing_rectangle1 (Region, RegionClosing, 70, 10)

*将区域RegionClosing拆解成有联系的独立的单元并输出到区域Lines(Lines的元素个数为5,即一行为一个区域)

connection (RegionClosing, Lines)

*选择区域Lines中的第三个元素,即第三行,输出到区域Training

select_obj (Lines, Training, TrainingLine)

*将用于训练的字符输出到区域TrainingChars

intersection (Training, Region, TrainingChars)

*将区域TrainingChars区域拆分开来并输出到ConnectedRegions(元素个数为10,即第三行的字符个数)

connection (TrainingChars, ConnectedRegions)

*将区域ConnectedRegion中的元素从左往右排并输出到区域SortedRegions

sort_region (ConnectedRegions, SortedRegions,'first_point', 'true', 'column')

    第二步:

*图片中字符的名字

Chars := ['0','1','2','3','4','5','6','7','8','9']

TrainFile := 'numbers.trf'

dev_set_check ('~give_error')

delete_file (TrainFile)

dev_set_check ('give_error')

*将字符一个个取出,并将信息写入到training file

for i := 1 to 10 by 1

select_obj (SortedRegions, TrainSingle, i)

*灰度值和字符区域和名字被写入到了training file

append_ocr_trainf (TrainSingle, Image, Chars[i -1], TrainFile)

endfor

 

 

转载请注明原文地址: https://www.6miu.com/read-800245.html

最新回复(0)