热点推荐

查看: 1556|回复: 3
收起左侧

[资料] OCR 专案

[复制链接]
  • TA的每日心情
    害羞
    2018-9-13 09:29
  • 签到天数: 50 天

    连续签到: 3 天

    [LV.5]常住居民I

    100

    主题

    280

    帖子

    1202

    积分

    Rank: 7Rank: 7Rank: 7

    积分
    1202

    优秀版主

    发表于 2016-11-4 16:04:33 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    本帖最后由 wenluderen 于 2016-11-5 09:52 编辑

    ××××××××××××××××××××××
    https://www.51halcon.com/forum.php?mo ... ge=1&extra=#pid1957

    https://www.51halcon.com/forum.p ... &extra=#pid1958
    ××××××××××××××××××××××

    OCR 专案。

    从大到小,从小到大。  打核一次OCR。
    ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
    大的步骤是:

    一:创建训练文件




    二:训练OCR




    三:识别文字

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2018-9-13 09:29
  • 签到天数: 50 天

    连续签到: 3 天

    [LV.5]常住居民I

    100

    主题

    280

    帖子

    1202

    积分

    Rank: 7Rank: 7Rank: 7

    积分
    1202

    优秀版主

     楼主| 发表于 2016-11-4 16:29:57 | 显示全部楼层

    RE: OCR 专案

    本帖最后由 wenluderen 于 2016-11-4 16:51 编辑

    第一步:创建一个训练模板(保存到硬盘上的后缀是trf)

    * This example program shows how to use a simple SVM OCR classifier
    * 关闭对窗口的更新
    dev_update_off ()
    read_image (Image, 'letters')

    get_image_size (Image, Width, Height)

    dev_close_window ()

    *打开一个新的窗口,并且自动激活为当前窗口。
    dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

    *设定多行输出颜色。
    dev_set_colored (12)
    *设定字体
    set_display_font (WindowHandle, 16, 'mono', 'true', 'false')

    *获取系统的临时路径
    get_tmp_dir (TmpDir)

    *创建一个变量,这个变量将用于存储OCR训练文件的路径。
    TrainFile := TmpDir + '/letters.trf'


    dev_display (Image)
    gen_rectangle1 (Rectangle, 0, 0, Height - 1, 400)
    reduce_domain (Image, Rectangle, Image)
    dev_clear_window()
    dev_display(Image)
    * Segment the image
    binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
    dev_clear_window()
    dev_display(Region)
    * Connect the i's and j's with their dots
    *使用基于圆的模板膨胀
    dilation_circle (Region, RegionDilation, 3.5)

    * Compute the correct connected components
    *分离一个区域中相连的部分,变成多个区域输出
    connection (RegionDilation, ConnectedRegions)
    dev_clear_window()
    dev_display(ConnectedRegions)
    * Reduce each connected component (character) to its original shape
    *计算两个区域的交集。
    intersection (ConnectedRegions, Region, RegionIntersection)


    dev_clear_window()
    dev_display(RegionIntersection)
    * Sort the characters line-by-line
    *按照某种规则对一堆杂乱的Region进行排序
    sort_region (RegionIntersection, Characters, 'character', 'true', 'row')

    dev_display (Characters)
    disp_message (WindowHandle, 'Training characters', 'window', 12, 12, 'black', 'true')
    disp_continue_message (WindowHandle, 'black', 'true')
    stop ()
    * Compute the true class of each character





    *计算Region的数目。为了后面字符数组的赋值。
    count_obj (Characters, Number)
    Length := Number / 27
    Classes := []
    for J := 0 to 25 by 1
        Classes := [Classes,\
                   gen_tuple_const(Length,chr(ord('a') + J))]
    endfor
    stop()
    Classes := [Classes,gen_tuple_const(Length,'.')]
    * Construct the necessary training file from the segmented characters
    write_ocr_trainf (Characters,\  输入参数  字符所在的ROI区域
                      Image, \  输入参数  灰度图
                      Classes, \ 输入参数 字符数组
                      TrainFile)



    *至此完成OCR模板的创建和保存。



    用到的素材如下:

    letters.png

    ××××××××××××××××××××××××××××××××××××××××××××××××××××××××
    特别注意:以上步骤的部分步骤,将会在正式OCR的代码里面使用。
    ××××××××××××××××××××××××××××××××××××××××××××××××××××××××


    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2018-9-13 09:29
  • 签到天数: 50 天

    连续签到: 3 天

    [LV.5]常住居民I

    100

    主题

    280

    帖子

    1202

    积分

    Rank: 7Rank: 7Rank: 7

    积分
    1202

    优秀版主

     楼主| 发表于 2016-11-5 13:56:28 | 显示全部楼层
    本帖最后由 wenluderen 于 2016-11-5 14:04 编辑

    第二步:训练OCR


    A :读取一个OCR训练文件
    2016-11-05_135947.jpg
    read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)


    * step: create and train classifier


    B:

    2016-11-05_140204.jpg

    2016-11-05_140215.jpg
    create_ocr_class_svm (8, 10, 'constant', 'default', CharacterNames, 'rbf', 0.02, 0.001, 'one-versus-one', 'normalization', 0, OCRHandle)




    * Train the classifier
    2016-11-05_140405.jpg
    trainf_ocr_class_svm (OCRHandle, TrainFile, 0.001, 'default')



    stop ()
    * ****
    * step: save classifier
    * ****
    FontFile := 'ZHANG-Num0-9A-Z_SVM.omc'
    write_ocr_class_svm(OCRHandle,FontFile)
    * free memory
    clear_ocr_class_svm (OCRHandle)

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2018-7-30 11:42
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    0

    主题

    55

    帖子

    513

    积分

    Rank: 3

    积分
    513

    切换助手验证会员

    发表于 2017-7-25 14:37:39 | 显示全部楼层
    就是分的太散了,可以研究研究

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识