halcon喷码字符识别

dev_close_window ()
read_image (Image1, '9_30108_3c3894702192451.png')
rgb1_to_gray (Image1, Image)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
mean_image (Image, ImageMean, 6, 6)
dyn_threshold (Image, ImageMean, RegionDynThresh, 5, 'light')
connection (RegionDynThresh, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 488.03, 2000)
closing_circle (SelectedRegions, RegionClosing, 6)
dev_clear_window ()
dev_display (Image)
dev_display (RegionClosing)

sort_region (RegionClosing, FinalNumbers, 'first_point', 'true', 'column')
* Step2: Training file generation
FontName :='新建文件夹'
TrainingNames := ['0','2','0','6','1','3','9','1','0','1','1','4','7','2','1','C','9','9']
TrainingFileName := FontName + '.trf'
sort_region (FinalNumbers, SortedRegions, 'first_point', 'true', 'column')
shape_trans (SortedRegions, RegionTrans, 'rectangle1')
area_center (RegionTrans, Area, Row, Column)
MeanRow := mean(Row)
dev_set_check ('~give_error')
delete_file (TrainingFileName)
dev_set_check ('give_error')
for i := 0 to |TrainingNames| - 1 by 1
    select_obj (SortedRegions, CharaterRegions, i + 1)
    append_ocr_trainf (CharaterRegions, Image, TrainingNames[i], TrainingFileName)
    disp_message (WindowHandle, TrainingNames[i], 'image', MeanRow - 40, Column[i] - 6, 'yellow', 'false')
endfor
* 
* Step3: Training
CharNames := uniq(sort(TrainingNames))
create_ocr_class_mlp (8, 10, 'constant', 'default', CharNames, 5, 'none', 10, 42, OCRHandle)
trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)
write_ocr_class_mlp (OCRHandle, FontName)
clear_ocr_class_mlp (OCRHandle)



* 
* Create Automatic Text Reader and set some parameters
create_text_model_reader ('auto', '/新建文件夹', TextModel)
* The printed date has a significantly higher stroke width
set_text_model_param (TextModel, 'min_stroke_width', 5)
* The "best before" date has a particular and known structure
set_text_model_param (TextModel, 'text_line_structure', '2 2 2')
* 
* Read the "best before" date
find_text (Image, TextModel, TextResultID)
* 
* Display the segmentation results
get_text_object (Characters, TextResultID, 'all_lines')
dev_display (Image)
dev_display (Characters)
stop ()
* Display the reading results
get_text_result (TextResultID, 'class', Classes)
area_center (Characters, Area, Row, Column)
for Index := 0 to |Classes| - 1 by 1
    disp_message (WindowHandle, Classes[Index], 'image', 80, Column[Index] - 3, 'green', 'false')
endfor
* 
* Free memory
clear_text_result (TextResultID)
clear_text_model (TextModel)

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cashmood/article/details/111941755