OCR(Optical Character Recognition,光学字符识别)是通过使用OCR工具实现的。Halcon提供了一些用于进行字符识别的函数和工具,可以帮助用户实现文本的自动识别和提取。
read_ocr_class_mlp:用于读取一个经过训练好的OCR多类别MLP(Multi-Layer Perceptron,多层感知器)分类器。
do_ocr_multi_class_mlp:用于在给定的图像上执行基于MLP的多类别OCR,并返回识别的类别和置信度。
dev_close_window ()
read_image (Image, 'D:/Halcon/images/PlugGauge.jpg')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/5, Height/6, 'black', WindowHandle)
dev_display (Image)
* 转成灰度图
rgb1_to_gray (Image, GrayImage)
* 制作ROI
gen_rectangle1 (ROI_0, 1645.88, 1336.74, 1800.1, 2192.3)
gen_rectangle1 (ROI_1, 2340.5, 958.469, 2477.66, 1050.61)
* 合并区域
union2 (ROI_0, ROI_1, ROI_1)
gen_rectangle1 (ROI_2, 3143.16, 1670.06, 3286.34, 1836.29)
union2 (ROI_1, ROI_2, RegionUnion)
* 裁剪图像
reduce_domain (GrayImage, RegionUnion, ImageReduced)* 均值平滑
mean_image (ImageReduced, ImageMean, 150, 150)
* 局部阈值
dyn_threshold (GrayImage, ImageMean, RegionDynThresh, 30, 'dark')
* 连通性
connection (RegionDynThresh, ConnectedRegions)
* 开运算(去除杂斑)
opening_circle (ConnectedRegions, RegionOpening, 2.5)
connection (RegionOpening, ConnectedRegions1)
* 筛选区域
select_shape (ConnectedRegions1, SelectedRegions, 'area', 'and', 230, 99999)
select_shape (ConnectedRegions1, SelectedRegions, 'height', 'and', 30, 99999)union1 (SelectedRegions, RegionUnion1)
* 填充图像中的形状
fill_up_shape (RegionUnion1, RegionFillUp, 'area', 1, 100)
* 膨胀
dilation_circle (RegionFillUp, RegionDilation, 5)
connection (RegionDilation, ConnectedRegions2)
* 交集
intersection (ConnectedRegions2, RegionFillUp, RegionIntersection)
* 对区域进行排序
sort_region (RegionIntersection, SortedRegions, 'character', 'true', 'row')* 字符进行识别,从文件中读取分类器
* 参数一:是指定的已训练好的OCR多类别MLP分类器文件。
* 参数二:存储所读取分类器的句柄。
read_ocr_class_mlp ('Industrial_0-9A-Z_Rej.omc', OCRHandle)
* 使用分类器对字符进行提取
* 参数一:排序完成的区域
* 参数二:灰度图像
* 参数三:分类器的句柄
* 参数四:输出参数,用于存储识别的类别
* 参数五:识别结果的置信度
do_ocr_multi_class_mlp (SortedRegions, GrayImage, OCRHandle, Class, Confidence)dev_set_color('red')
dev_display (Image)
dev_display (SortedRegions)set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
* 求最小外接矩形,会返回矩形的左上角坐标和右下角坐标
* 参数一:已排序的区域
* 参数二、三:最小外接矩形的一个角的行和列坐标
* 参数四、五:最小外接矩形的另一个角的行和列坐标
smallest_rectangle1 (SortedRegions, Row1, Column1, Row2, Column2)disp_message (WindowHandle, Class, 'image', Row2, Column2, 'black', 'false')