Halcon示例:bottlet.hdev 光学字符识别(创建OCR)
*
* Training of the OCR
* The font is used in "bottle.hdev"
*
*
* Step 0: Preparations
FontName := 'bottle'
*
* Step 1: Segmentation
dev_update_window ('off')
read_image (Bottle, 'bottle2')
get_image_size (Bottle, Width, Height)
dev_close_window ()
dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowID)
dev_display (Bottle)
dev_set_draw ('fill')
set_display_font (WindowID, 27, 'mono', 'true', 'false')
threshold (Bottle, RawSegmentation, 0, 95)
fill_up_shape (RawSegmentation, RemovedNoise, 'area', 1, 5)
*圆形结构开运算 可以平滑区域的边缘和消除小的区域 形态学————Region
opening_circle (RemovedNoise, ThickStructures, 2.5)
fill_up (ThickStructures, Solid)
* dilation_rectangle1 (Solid, RegionDilation, 1, 7)
* erosion_rectangle1 (RegionDilation, RegionErosion, 2, 14)
*矩形结构开运算 形态学————Region
opening_rectangle1 (Solid, Cut, 1, 7)
connection (Cut, ConnectedPatterns)
*区域的交集 Regions区域——————区域设置Sets
intersection (ConnectedPatterns, ThickStructures, NumberCandidates)
select_shape (NumberCandidates, Numbers, 'area', 'and', 300, 9999)
*sort_region(Regions : SortedRegions : SortMode, Order, RowOrCol : ) Regions区域——————区域转换Transformations
*SortMode:排序的类型 Order:true递增 false递减 RowOrCol:行优先或列优先
sort_region (Numbers, FinalNumbers, 'first_point', 'true', 'column')
dev_display (Bottle)
dev_set_color ('green')
dev_set_line_width (2)
*设置区域的输出模式 original(最初的) convex(凸) outer_circle(外接圆) inner_circle(内接圆)
*rectangle1(平行外接矩形) rectangle2(角度矩形) ellipse(椭圆) icon(图标)
dev_set_shape ('rectangle1')
dev_set_draw ('margin')
dev_display (FinalNumbers)
*
* Step2: Training file generation
dev_set_shape ('original')
TrainingNames := ['0','1','0','8','9','4']
TrainingFileName := FontName + '.trf'
sort_region (FinalNumbers, SortedRegions, 'first_point', 'true', 'column')
*转换区域 Regions区域——————区域转换Transformations
shape_trans (SortedRegions, RegionTrans, 'rectangle1')
area_center (RegionTrans, Area, Row, Column)
*等同于tuple_mean (Row, Mean) 平均数
MeanRow := mean(Row)
*设置错误处理 ~give_error忽略错误
dev_set_check ('~give_error')
*前面设置忽略错误,如果TrainingFileName不存在,那么在删除时就不会报错
delete_file (TrainingFileName)
*再设置为默认状态,不忽略错误
dev_set_check ('give_error')
for i := 0 to |TrainingNames| - 1 by 1
select_obj (SortedRegions, CharaterRegions, i + 1)
*字符识别(OCR)——————训练文件(Training Files)
*向训练文件中添加字符
*append_ocr_trainf(Character, Image : : Class, TrainingFile : )
*Character:要添加的训练字符 Image:灰度图像 Class:类名,制定字符的分类 TrainingFile:训练文件,扩展名(.trf .otr)
append_ocr_trainf (CharaterRegions, Bottle, TrainingNames[i], TrainingFileName)
disp_message (WindowID, TrainingNames[i], 'image', MeanRow - 40, Column[i] - 6, 'yellow', 'false')
endfor
*
* Step3: Training
*Tuple_uniq源自(元组Tuple:选择Selection)
*剔除Tuple变量中连续且相同的元素,只保存一个,剩下的元素构成新的Tuple变量返回
CharNames := uniq(sort(TrainingNames))
*归类字符识别OCR——————神经网络Neural Nets
*创建一个用于多层感知器(MLP)的OCR分类器
create_ocr_class_mlp (8, 10, 'constant', 'default', CharNames, 5, 'none', 10, 42, OCRHandle)
*用OCR训练文件中存储的训练字符来训练基于MLP的OCR分类器
trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)
*将OCR分类器写入到文件中, 扩展名.omc
write_ocr_class_mlp (OCRHandle, FontName)
*清除由句柄参数OCRHandle指定的由算子create_ocr_class_mlp创建的OCR分类器
clear_ocr_class_mlp (OCRHandle)
Halcon示例:bottlet.hdev 光学字符识别(创建OCR)的更多相关文章
- HALCON示例:BOTTLE.HDEV 光学字符识别(分割OCR)
* * bottle.hdev: Segment and read numbers on a beer bottle 分割读取啤酒瓶上的数字* * Step 0: Preparations* Spec ...
- 【OCR技术系列一】光学字符识别技术介绍
注:此篇内容主要是综合整理了光学字符识别 和OCR技术系列之一]字符识别技术总览,详情见文末参考文献 什么是 OCR? OCR(Optical Character Recognition,光学字符识别 ...
- Tesseract:简单的Java光学字符识别
1.1 介绍 开发具有一定价值的符号是人类特有的特征.对于人们来说识别这些符号和理解图片上的文字是非常正常的事情.与计算机那样去抓取文字不同,我们完全是基于视觉的本能去阅读它们. 另一方面,计算机的工 ...
- 非黑即白--谷歌OCR光学字符识别
# coding=utf-8 #非黑即白--谷歌OCR光学字符识别 # 颜色的世界里,非黑即白.computer表示深信不疑. # 今天研究一下OCR光学识别庞大领域中的众多分支里的一个开源项目的一个 ...
- [Xcode 实际操作]七、文件与数据-(22)使用OCR光学字符识别技术识别银行卡号码
目录:[Swift]Xcode实际操作 本文将演示如何使用光学字符识别技术,识别信用卡上的卡号. OCR技术是光学字符识别的缩写(Optical Character Recognition), 是通过 ...
- 激光三角测量(sheet of light)halcon示例详解 Reconstruct_Connection_Rod_Calib.hdev 三维重建
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11555100.html 前言:最近项目用到halcon的3d模板匹配,三维重建,相机标定,所以 ...
- Ocrad.js – JS 实现 OCR 光学字符识别
Ocrad.js 相当于是 Ocrad 项目的纯 JavaScript 版本,使用 Emscripten 自动转换.这是一个简单的 OCR (光学字符识别)程序,可以扫描图像中的文字回文本. 不像 G ...
- 6 个优秀的开源 OCR 光学字符识别工具
转自:http://sigvc.org/bbs/thread-870-1-1.html 纸张在许多地方已日益失宠,无纸化办公谈论40多年,办公环境正限制纸山的生成.而过去几年,无纸化办公的概念发生了显 ...
- 光学字符识别OCR
1.功能: 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程 2.典型应用: 名片扫描 3 ...
随机推荐
- Spell checker using hash table
Problem description Given a text file, show the spell errors from it. (https://www.andrew.cmu.edu/c ...
- 《Java编程思想》读书笔记-对象导论
计算机是头脑延伸的工具,是一种不同类型的表达媒体.本文以背景性的和补充性的材料,介绍包括开发方法概述在内的面向对象程序设计(Object-oriented Programming,OOP)的基本概念. ...
- js: var定义域问题
- kolla单节点部署openstack
virtualbox环境: 双网卡:enp0s3(桥接) 192.168.102.194 enp0s8(桥接) 无ip 块存储 50G 关闭防火墙,selinux. 配置yum源:wget ...
- PythonStudy——阶段总结
每个数据类型的最大特点是什么? (1)int整型:用于存放整形对象,是不可变类型.若将一个整数赋值给一个变量名,python可自动将其设置为int型. 例如:age = 30 这里的age对象的typ ...
- socat管理haproxy以及haproxy调优
Unix套接字命令(Unix Socket commands) socat是一个多功能的网络工具,名字来由是“Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http ...
- springboot解决跨域问题
在启动类里加入corsFilter import org.springframework.boot.SpringApplication; import org.springframework.boot ...
- Tomcat虚拟根目录与虚拟目录
tomcat版本:apache-tomcat-7.0.42 参考:http://blog.csdn.net/pangdingshan/article/details/7214786 一.虚拟根目录 1 ...
- spingMVC+mybatis+spring-session共享内存配置
1. redis依赖: <dependency> <groupId>org.springframework.session</groupId> <artifa ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第三周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容总结 (仅在此列举个性化学习总结) 一.编程语言的几个发展阶段. 1.面向机器语言:汇编语言 ...