本文主要是介绍Halcon例程之bottle.hdev,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
重要的算子说明:
1、create_text_model_reader( : : Mode, OCRClassifierMLP : TextModel)
功能:创建一个文字模型
参数:输入:
Mode:选择文本分割方法,可选为 'auto' 和 'manual'(手动).;如果Mode=‘auto’,则后续 find_text 将会提取任意大小的字体;如果Mode=‘manual’,则一定要在set_text_model_param中设定字体的高度和宽度。
OCRClassifierMLP :分类器名称
参数:输出:
TextModel:输出新的文本模型
2、set_text_model_param( : : TextModel, GenParamName, GenParamValue : )
功能:设置文本模型参数
输入参数:
TextModel:输入文本模型
GenParamName:设定在提取文本时需要使用的参数名字;在Mode=‘auto’和‘manual’时,分别有不同的可选参数设 置,一定要注意不要设置错了(根据Mode设置),具体可以参考Halcon算子详解。下文中的例子中的文本特点是明显比周围的宽,所以设定参数为'min_stroke_width'。 'text_line_structure'设定意义为:确定需要寻找的文本的结构以有效的提高提取的准确性。该参数为一个字符串,包含的信息为每一个字符快所蕴含的字符个数与空间。例如关于日期的一个数各式为:月,日,年;每一个块有两个字符,则改参数可以设置为‘2 2 2’,如果年这个数字块有4个字符,则该参数可以设置为‘2 2 2-4’.
GenParamValue:设定提取文本的参数的值
3、find_text(Image : : TextModel : TextResultID)
功能:根据设置的文本模型在图像中找到具体的字符
输入参数:
Image:需要检测的图像
TextModel:已经设定好的文本模型
输出参数:
TextResultID:字符分割后的句柄
4、get_text_object( : Characters : TextResultID, ResultName : )
功能:获取字符分割后的图形结果
输出参数:
Characters: 字符结果
输入参数:
TextResultID:分割字符后的句柄
ResultName:以什么方式显示字符结果。‘all_lines’:返回所有的分割结果,字符排序方式为从上到下从左到右。
FontName := 'Industrial_0-9_NoRej'
* 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)
set_display_font (WindowID, 16, 'mono', 'true', 'false')
dev_display (Bottle)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*
* Create Automatic Text Reader and set some parameters
create_text_model_reader ('auto', FontName, TextModel)
* The printed date has a significantly higher stroke width
set_text_model_param (TextModel, 'min_stroke_width', 5)
* The "best before" date has a particular and known structure
set_text_model_param (TextModel, 'text_line_structure', '2 2 2')
*
* Read the "best before" date
find_text (Bottle, TextModel, TextResultID)
*
* Display the segmentation results
get_text_object (Characters, TextResultID, 'all_lines')
dev_display (Bottle)
dev_display (Characters)
stop ()
* Display the reading results
get_text_result (TextResultID, 'class', Classes)
area_center (Characters, Area, Row, Column)
for Index := 0 to |Classes| - 1 by 1disp_message (WindowID, Classes[Index], 'image', 80, Column[Index] - 3, 'green', 'false')
endfor
*
* Free memory
clear_text_result (TextResultID)
clear_text_model (TextModel)
这篇关于Halcon例程之bottle.hdev的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!