您的位置:首页 > 其它

OCR之engravedt_hdev

2020-08-17 22:51 127 查看
  • 此项目运用是训练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 ()
    以77掩码算子
    *决定某个方形区域内的灰度值,计算方形区域内的最大最小灰度的差,并体现到每个图像点上。
    *如果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 ()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: