read_image(Image, 'D:/图片/视觉检测图片/16.jpg')
get_image_size(Image, Width, Height)
dev_close_window()
dev_open_window(0, 0, Width/2, Height/2, 'black', WindowHandle)
dev_display(Image)
*按灰度值开运算矩形
gray_opening_rect(Image, ImageOpening, 11,10)
threshold(ImageOpening, Region, 140, 255)
fill_up(Region, RegionFillUp)
connection(RegionFillUp, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 150000, 999999)
erosion_circle(SelectedRegions, RegionErosion, 3.5)
reduce_domain(ImageOpening, RegionErosion, ImageReduced)
binary_threshold(ImageReduced, Region1, 'max_separability', 'dark', UsedThreshold)
dev_display(Image)
dev_display(Region1)
*按矩形扩张
dilation_rectangle1(Region1, RegionDilation, 40, 11)
closing_circle(RegionDilation, RegionClosing, 1.5)
connection(RegionClosing, ConnectedRegions1)
select_shape(ConnectedRegions1, SelectedRegions1, 'area', 'and', 25000, 99999)
closing_circle(SelectedRegions1, RegionClosing1, 13.5)
count_obj(SelectedRegions1, Number)
select_obj(RegionClosing1, ObjectSelected, 1)
intersection(ObjectSelected, Region1, RegionIntersection)
smallest_rectangle1(RegionIntersection, Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
*将矩形分成6段,末点剪起始点
partition_rectangle(Rectangle, Partitioned, (Column2 - Column1) / 6, Row2-Row1)
dev_display(Image)
dev_set_draw('margin')
dev_display(Partitioned)
intersection(Partitioned, Region1, RegionIntersection1)
dev_display(Image)
dev_set_draw('margin')
dev_display(RegionIntersection1)
*排序,最后一个参数是按列排序
sort_region(RegionIntersection1, SortedRegions, 'first_point', 'true', 'column')
*输入训练文本
TrainingNames:=['5','9','7','6','0','8']
*训练的文件名
TrainingFileName:='OCR1.trf'
area_center(SortedRegions, Area, Row, Column)
*取平均6个ROW
MeanRow :=mean(Row)
for i:=0 to |TrainingNames| -1 by 1
*选择排序中的字符
select_obj(SortedRegions, ObjectSelected1, i+1)
*将OCR训练放到训练文件中
append_ocr_trainf(ObjectSelected1, Image, TrainingNames[i], TrainingFileName)
set_tposition(WindowHandle, MeanRow- 80, Column[i]-20)
write_string(WindowHandle, TrainingNames[i])
endfor
create_ocr_class_mlp(8, 10, 'constant', 'default', TrainingNames, 80, 'none', 10, 42, OCRHandle)
trainf_ocr_class_mlp(OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)
write_ocr_class_mlp(OCRHandle, 'OCRTrain')