Halcon例程学习:adaption_ocv.hev(光学字符检测)

****************************************************************************************************
* Halcon例程学习:adaption_ocv.hev(光学字符检测)
* 光学字符检测:光照变化对OCV识别报纸字体质量的影响情况分析.
* 联系扣扣:370711753
* 创作时间:2014/11/25
* 修改时间:2014/11/25
****************************************************************************************************
read_image (Image, './images/a01.png')   // 读取图像
get_image_size (Image, Width, Height)    // 获得图像大小
dev_close_window ()   // 关闭窗口
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)   // 创建新窗口
dev_display (Image)   // 显示图像
* threshold(Image : Region : MinGray, MaxGray : ) 
* MinGray <= g <=  MaxGray
threshold (Image, Region, 0, 100)  // 固定阈值分割
* shape_trans(Region : RegionTrans : Type : ) 
* List of values: 'convex', 'ellipse', 'outer_circle', 'inner_circle',
*                 'rectangle1', 'rectangle2', 'inner_rectangle1', 'inner_center'
shape_trans (Region, RegionTrans, 'rectangle1')   // 区域形状变换
* dilation_rectangle1 — Dilate a region with a rectangular structuring element.
* dilation_rectangle1(Region : RegionDilation : Width, Height : ) 
dilation_rectangle1 (RegionTrans, RegionDilation, 10, 10)   // 区域矩形膨胀
* reduce_domain — Reduce the domain of an image.
reduce_domain (Image, RegionDilation, ImageReduced)   // 区域缩小
* create_ocv_proj — Create a new OCV tool based on gray value projections.
* 创建基于灰度值投影算法的光学字符验证(OCV)工具
create_ocv_proj ('A', OCVHandle)
* traind_ocv_proj — Training of an OCV tool.
* 注意模型训练时,不仅要包括前景像素,也要包括背景像素,因此一般采用区域最小矩形训练.
traind_ocv_proj (ImageReduced, OCVHandle, 'A', 'single')
dev_set_color ('red')   // 设置显示颜色
Quality1 := []
Quality2 := []
Quality3 := []
* 1.灰度值变换对模型质量的影响
for add := -40 to 40 by 1
    * scale_image — Scale the gray values of an image.
    * g' := g * Mult + Add
    * Mult = 255 / (GMax-GMin)
    * Add  = - Mult*GMin
    scale_image (Image, ImageScaled, 1, add)   // 图像灰度值缩放
    reduce_domain (ImageScaled, RegionDilation, ImageReduced)   // 区域缩小
    * do_ocv_simple — Verification of a pattern using an OCV tool.
    * 估算模型质量.
    do_ocv_simple (ImageReduced, OCVHandle, 'A', 'true', 'true', 'true', 'true', -1, Quality)
    set_tposition (WindowHandle, 24, 12)   // 设置文本光标位置
    write_string (WindowHandle, 'Intensity change = '+add)   // 输出字符串
    set_tposition (WindowHandle, 48, 12)   // 设置文本光标位置
    write_string (WindowHandle, 'Quality = '+Quality)        // 输出字符串
    Quality1 := [Quality1, Quality]
*     stop ()
endfor
* 2.灰度值变换对模型质量的影响
for scale := 0.5 to 1.5 by 0.025
    scale_image (Image, ImageScaled, scale, 0)   // 图像灰度值缩放
    reduce_domain (ImageScaled, RegionDilation, ImageReduced)   // 区域缩小
    do_ocv_simple (ImageReduced, OCVHandle, 'A', 'true', 'true', 'true', 'true', -1, Quality)
    set_tposition (WindowHandle, 24, 12)   // 设置文本光标位置
    write_string (WindowHandle, 'Intensity change = '+add)   // 输出字符串
    set_tposition (WindowHandle, 48, 12)   // 设置文本光标位置
    write_string (WindowHandle, 'Quality = '+Quality)        // 输出字符串
    Quality2 := [Quality2, Quality]
*     stop ()
endfor
* 3.区域遮挡对对模型质量的影响
for Length := 1 to 40 by 1
    gen_rectangle1 (Rectangle, 150, 125, 150+5, 145+Length)   // 生成矩形区域
    * paint_region(Region, Image : ImageResult : Grayval, Type : ) 
    paint_region (Rectangle, Image, ImageError, 210, 'fill')  // 油漆工具填充图像
    reduce_domain (ImageError, RegionDilation, ImageReduced)
    do_ocv_simple (ImageReduced, OCVHandle, 'A', 'true', 'true', 'true', 'true', -1, Quality)
    set_tposition (WindowHandle, 24, 12)   // 设置文本光标位置
    write_string (WindowHandle, 'Intensity change = '+add)   // 输出字符串
    set_tposition (WindowHandle, 48, 12)   // 设置文本光标位置
    write_string (WindowHandle, 'Quality = '+Quality)        // 输出字符串
    Quality3 := [Quality3, Quality]
*     stop ()
endfor
write_ocv (OCVHandle, './save/ocv/OCV.ocv')   // 保存OCV模型
close_ocv (OCVHandle)   // 关闭OCV模型
read_ocv('./save/ocv/OCV.ocv', OCVHandle)    // 读取OCV模型
close_ocv (OCVHandle)   // 关闭OCV模型
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值