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 ...
随机推荐
- 移动端IOS 固定下方的输入框,点击输入框位置会变的修复
if(data=="ios"){ var _this = $(".publish"); //无键盘时输入框到浏览器窗口顶部距离 var noInputViewH ...
- RabbitMq入门以及使用教程
祭出原帖:https://blog.csdn.net/lyhkmm/article/details/78772919 原文转载:http://blog.csdn.net/whycold/article ...
- 前端基础----CSS语法、CSS四种引入方式、CSS选择器、CSS属性操作
一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如: h1 {color:red; font-size:14px;} 二.CSS四种引入方式 1,行内式 行内式是在标 ...
- SpringAOP 注解方式
Spring-service-mvc.xml <context:component-scan base-package="com.restful.controller,com.rest ...
- java 中异常处理示例并捕获完整异常内容
public class Test { public static void main(String[] args) { try { int a = 1; int b = 0; int c = a/b ...
- Java web现在流行用什么框架?
Java是开源的,框架很多,这些框架都能解决特定的问题,提高开发效率.简化我们的代码复杂度,现在除了很多大家通用的一些主流框架外,很多公司针对自己的业务会自定义一些公司内部的框架,当然作为学习者我们首 ...
- Yii2中多表关联查询(hasOne、hasMany、join、joinwith)
表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name customer_id ...
- linux tomcat jvm调优
修改TOMCAT_HOME/bin/catalina.sh文件: # OS specific support. $var _must_ be set to either true or false. ...
- C# 代码小技巧
一 .自动属性. 1.vs下输入prop,Tab键就出现了. 2.有了自动属性,我们不用再额外为一个类的每个公共属性定义一个私有字段(实际上没多大用处的字段), 但是通过反射还是可以看到对应的私有 ...
- Java种的String
String中的常用方法 subString()的使用,charAt的使用方法: indexof等的用法 String和byte的转换,对于程序过程的传输很重要, ==和equals的比较 1equa ...