首页 > 其他 > 详细

Ocr之engravedt_hdev

时间:2020-08-17 23:27:52      阅读:124      评论:0      收藏:0      [点我收藏+]

* 此项目运用是训练OCR字体,给‘engraved.hdev‘使用
* Example program to train the characters for OCR
* The font is used in "engraved.hdev"
*
* 第0步:准备工作
* Step0: Preparation
*字体名称
FontName := ‘engraved‘
*关闭窗体更新
dev_update_window (‘off‘)
* 第1步: 图像分割
* Step1: Segmentation
*读取图像
read_image (Image, ‘engraved‘)
*获取图像大小
get_image_size (Image, Width, Height)
*关闭窗体
dev_close_window ()
*打开新窗体
dev_open_window (0, 0, Width, Height, ‘black‘, WindowHandle)
*设置显示字体
set_display_font (WindowHandle, 20, ‘mono‘, ‘true‘, ‘false‘)
*显示图像
dev_display (Image)
*右下角显示‘Press f5 to continue‘这个信息
disp_continue_message (WindowHandle, ‘black‘, ‘true‘)
stop ()
*以7*7掩码算子
*决定某个方形区域内的灰度值,计算方形区域内的最大最小灰度的差,并体现到每个图像点上。
*如果MaskHeight和MaskWidth是偶数,它们被变为靠近的小的奇数值,图像边缘的灰度值是呈镜像出现的。
gray_range_rect (Image, ImageResult, 7, 7)
*反转图像
invert_image (ImageResult, ImageInvert)
*阈值分割图像
threshold (ImageResult, Region, 128, 255)
*联通区域
connection (Region, ConnectedRegions)
*根据面积选择区域
select_shape (ConnectedRegions, SelectedRegions, ‘area‘, ‘and‘, 1000, 99999)
*设置显示颜色
dev_set_colored (12)
*设置填充方式
dev_set_draw (‘margin‘)
*设置区域显示形状
dev_set_shape (‘rectangle1‘)
*设置线宽
dev_set_line_width (2)
*设置处理后的图像
dev_display (ImageResult)
*显示选中区域
dev_display (SelectedRegions)
*右下角显示‘Press f5 to continue‘这个信息
disp_continue_message (WindowHandle, ‘black‘, ‘true‘)
stop ()
* 第二步:训练文件生成
* Step2: Training file generation
*字符名称
TrainingNames := [‘0‘,‘3‘,‘F‘,‘A‘,‘L‘,‘D‘,‘0‘]
*训练文件名称
TrainingFileName := FontName + ‘.trf‘
*排列区域
sort_region (SelectedRegions, 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‘)
*设置显示颜色
dev_set_color (‘yellow‘)
*将字符和对应Ocr区域添加到训练文件
for I := 0 to |TrainingNames| - 1 by 1
    *选择一个区域
    select_obj (SortedRegions, CharaterRegions, I + 1)
    *添加到训练文件
    append_ocr_trainf (CharaterRegions, ImageInvert, TrainingNames[I], TrainingFileName)
    *设置文字信息显示位置
    set_tposition (WindowHandle, MeanRow - 80, Column[I] - 10)
    *显示文字信息
    write_string (WindowHandle, TrainingNames[I])
endfor
* 第3步
* Step3: Training
*保留唯一字符
CharNames := uniq(sort(TrainingNames))
*创建MLP句柄
create_ocr_class_mlp (8, 10, ‘constant‘, ‘default‘, CharNames, 5, ‘none‘, 10, 42, OCRHandle)
*训练OCR
trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)
*保存训练好的OCR文件
write_ocr_class_mlp (OCRHandle, FontName)
*清除OCR句柄,释放内存
clear_ocr_class_mlp (OCRHandle)
*右下角显示‘Press f5 to continue‘这个信息
disp_continue_message (WindowHandle, ‘black‘, ‘true‘)
stop ()
*清除窗体
dev_clear_window ()

Ocr之engravedt_hdev

原文:https://www.cnblogs.com/HomeSapiens/p/13520685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!