识别效果




halcon光学字符识别

使用的halcon版本21.05
先训练模型,标记图片对应的字符,训练生成分类器

*
* Training of the OCR
* The font is used in "bottle.hdev"
*
*
* Step 0: Preparations*
* Step 1: Segmentation
FontName:='yan_zheng_ma9988'* 训练文件保存
TrainingFileName:='D:/'+FontName+'.trf'* 分类器保存
FontFileOMC:='D:/'+FontName+'.omc'dev_update_window ('off')
*训练read_image (Image, 'D:/Halcon测试图片/验证码图片1/3+11.jpg')get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowID)
set_display_font (WindowID, 27, 'mono', 'true', 'false')*regiongrowing (ImageInvert, Regions, 2, 2, 1, 255)* 筛选体积大的,数字越大体积越大,红色为选中
threshold (Image, RawSegmentation, 4, 200)* 开口可以消除小区域(比圆形结构元件小)并平滑区域的边界。
opening_circle (RawSegmentation, circleRegion, 1)*内部充满
fill_up (circleRegion, RegionFillUp)*char_threshold (Image, Image, Characters, 3, 50, Threshold)*根据形状特征填充孔洞*fill_up_shape(RawSegmentation, fillRegin, 'area', 5, 5)*去掉小的模块
opening_rectangle1 (RegionFillUp, Cut,2,2)*利用矩形结构元素执行开运算。矩形宽设为1,高为7,相当于低于7的连接被截断
*opening_rectangle1 (RegionFillUp, Cut,3, 3)*分割粘连字符
*partition_rectangle (Cut, ConnectedPatterns, 22, 100)
partition_dynamic(Cut,parRegion,22,20)*  与threshold后的图,求交集
intersection (parRegion, RawSegmentation, NumberCandidates)opening_rectangle1 (NumberCandidates, Cut2,1, 2)* 选择指定尺寸的块
select_shape (Cut2, Numbers, ['width','height'], 'and',[2, 1],[50,55])sort_region (Numbers, FinalNumbers, 'first_point', 'true', 'column')
dev_display (Image)
dev_set_color ('green')
dev_set_line_width (2)
dev_set_shape ('rectangle1')
dev_set_draw ('margin')
dev_display (FinalNumbers)
*
stop()*----------------训练模型,开始-----------------------
TrainingNames := ['3','+','1','1' ,'=']
*TrainingFileName := FontName + '.trf'
sort_region (FinalNumbers, 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')*图片数字下标
K:=0
for I := 0 to |Column| - 1 by 1select_obj (SortedRegions, CharaterRegions, I+1)gen_empty_region (EmptyObject)     if(CharaterRegions!=EmptyObject)          append_ocr_trainf (CharaterRegions, Image, TrainingNames[K], TrainingFileName)disp_message (WindowID, TrainingNames[K], 'image', MeanRow+10, Column[I]-5, 'red', 'false') K:=K+1endifendfor*字符去重复 uniq
CharNames := uniq(sort(TrainingNames))
create_ocr_class_mlp (10, 50, 'constant', 'default', CharNames, 10, 'none', 10, 42, OCRHandle)
trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)write_ocr_class_mlp (OCRHandle, FontFileOMC)
*----------------训练模型,结束-----------------------

halcon识别代码

*
* Training of the OCR
* The font is used in "bottle.hdev"
*
*
* Step 0: Preparations*
* Step 1: Segmentation
FontName:='yan_zheng_ma9988'
TrainingFileName:='d:/'+FontName+'.trf'
FontFileOMC:='d:/'+FontName+'.omc'dev_update_window ('off')*  字符识别read_image (Image, 'd:/Halcon测试图片/验证码图片1/220_7-3.jpg')get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowID)* 显示字体大小
set_display_font (WindowID, 30, 'mono', 'true', 'false')*  灰度值处理
*gray_range_rect (Image, ImageResult, 3, 3)
*invert_image (ImageResult, ImageInvert)*regiongrowing (ImageInvert, Regions, 2, 2, 1, 255)* 筛选体积大的,数字越大体积越大,红色为选中
threshold (Image, RawSegmentation, 4, 200)
*char_threshold (Image, Image, Characters, 3, 50, Threshold)* 开口可以消除小区域(比圆形结构元件小)并平滑区域的边界。
opening_circle (RawSegmentation, circleRegion, 1)*内部充满
fill_up (circleRegion, RegionFillUp)*char_threshold (Image, Image, Characters, 3, 50, Threshold)*根据形状特征填充孔洞*fill_up_shape(RawSegmentation, fillRegin, 'area', 5, 5)*去掉小的模块
opening_rectangle1 (RegionFillUp, Cut,2,2)*利用矩形结构元素执行开运算。矩形宽设为1,高为7,相当于低于7的连接被截断
*opening_rectangle1 (RegionFillUp, Cut,3, 3)*分割粘连字符
*partition_rectangle (Cut, ConnectedPatterns, 22, 100)
partition_dynamic(Cut,parRegion,22,20)*  与threshold后的图,求交集
intersection (parRegion, RawSegmentation, NumberCandidates)opening_rectangle1 (NumberCandidates, Cut2,1, 2)* 选择指定尺寸的块
select_shape (Cut2, Numbers, ['width','height'], 'and',[2, 1],[50,55])sort_region (Numbers, FinalNumbers, 'first_point', 'true', 'column')dev_display (Image)
dev_set_color ('green')
dev_set_line_width (2)
dev_set_shape ('rectangle1')
dev_set_draw ('margin')
dev_display (FinalNumbers)
* * 读取字符,识别标记
shape_trans (FinalNumbers, RegionTrans, 'rectangle1')
dev_display (RegionTrans)
area_center (RegionTrans, Area, Row, Column)
MeanRow := mean(Row)count_obj (FinalNumbers, Number)*read_ocr_class_mlp (FontName, OCRHandle)
read_ocr_class_mlp (FontFileOMC, OCRHandle2)
for I := 1 to Number by 1select_obj (FinalNumbers, CharaterRegions,I)   gen_empty_region (EmptyObject) if(CharaterRegions!=EmptyObject)* 识别时,必须与原图对比* do_ocr_single_class_mlp(CharaterRegions, Image, OCRHandle2,1, Class, Confidence)do_ocr_multi_class_mlp (CharaterRegions, Image, OCRHandle2, Class, Confidence)dev_disp_text (Class, 'image', MeanRow+10, Column[I - 1]-5, 'blue', 'box', 'false')endifendfor

halcon光学字符识别(训练后识别),验证码识别相关推荐

  1. 文字点选识别验证码识别

    文字点选识别&验证码识别 Warning!请保证本项目仅用于研究学习!感谢配合支持! 项目地址: https://github.com/youfengyouyang/Spider_Captch ...

  2. PaddleOCR #使用PaddleOCR进行光学字符识别(PP-OCR文本检测识别)

    引言: PaddleOCR 是一个 OCR 框架或工具包,它提供多语言实用的 OCR 工具,帮助用户在几行代码中应用和训练不同的模型.PaddleOCR 提供了一系列高质量的预训练模型.这包含三种类型 ...

  3. 字符识别Python实现 图片验证码识别

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  4. web自动化之验证码识别解决方案

    验证码识别解决方案 对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动 ...

  5. 如何通过 Serverless 轻松识别验证码?

    作者 | 江昱 来源 | Serverless 公众号 前言 Serverless 概念自被提出就倍受关注,尤其是近些年来 Serverless 焕发出了前所未有的活力,各领域的工程师都在试图将 Se ...

  6. 验证码识别的原理python_Python验证码识别处理实例

    一.准备工作与代码实例 1.PIL.pytesser.tesseract (1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载) 下 ...

  7. cnn验证码识别代码_中文项目:快速识别验证码,CNN也能为爬虫保驾护航

    原标题:中文项目:快速识别验证码,CNN也能为爬虫保驾护航 机器之心专栏 作者:Nick Li 随着卷积网络的推广,现在有各种各样的快捷应用,例如识别验证码和数学公式等.本文介绍了一个便捷的验证码识别 ...

  8. python神经网络库识别验证码_基于TensorFlow 使用卷积神经网络识别字符型图片验证码...

    本项目使用卷积神经网络识别字符型图片验证码,其基于TensorFlow 框架.它封装了非常通用的校验.训练.验证.识别和调用 API,极大地减低了识别字符型验证码花费的时间和精力. 项目地址:http ...

  9. 国税局发票查验中英文验证码识别最新版,识别率99.9%

    采用深度学习进行发票查验验证码模型的训练,在我电脑上模型训练的环境如下: 显卡:RTX 2080TI tensorflow-gpu:2.5.3 1 训练集和测试集的准备 发票查验的验证码分为4种类型, ...

最新文章

  1. XML Schema用法
  2. 科创板允许红筹企业上市 条件成熟后BAT可速回归
  3. 【测试】ESP32天线信号强度比较,小龟小车A2天线esp32cam板载外置天线测试数据...
  4. ZooKeeper的典型应用
  5. C++初始化和关闭roscpp节点
  6. php人才招聘网可二开
  7. Unity Tiling和offset的使用
  8. fc588热敏打印机驱动_为称重仪表设计热敏打印模块 - 工业自动化称重仪表
  9. oracle常用小知识点
  10. android多媒体部分学习笔记八------音频录制 mediaRecorder
  11. js实现上传文件实时显示缩略图
  12. MATLAB显示图像为什么一片白
  13. 成功解决生意参谋中transit-id和加密数据date
  14. Nginx优化服务之网页压缩
  15. 写得太好了,大约《越狱》批评(发布)
  16. Unity脚本组件勾选框的存在的意义
  17. 云呐|固定资产管理的目的,固定资产管理办法的目的
  18. MATLAB绘制开环单位阶跃响应,MATLAB语言与控制系统仿真-参考 答案-第5章.doc
  19. 浮点型数据的输入和输出(C语言)
  20. boonton 功率测试软件,Power Tester

热门文章

  1. w ndows热键,Windows8 鼠标键盘快捷键热键技巧汇总
  2. 华为eNSP防火墙NAT地址转换之NAT-NOPAT
  3. NAT与PAT的区别
  4. JS中常用的几种设计模式
  5. 国内外经典开源数据大全!
  6. Mac修改hosts文件并使其立即生效
  7. iOS10 注册极光推送(干货)
  8. python 单例模式连接数据库
  9. 现在我们家BB 28周了
  10. JUC学习 - 延迟队列 DelayQueue 详解