示例11:学习使用字符识别工具,进行字符训练与识别

示例11中,我们将演示使用“字符识别”工具,通过字符训练的方式,识别标签上的一行SN字符信息。

 运行效果 

编辑工程文件 

11.1:采集图像 | 添加“U3相机1”工具

点击工具箱“获取图像”,选择“U3相机”工具,双击并设置参数值,调整参数使图像上要检测的字符与背景黑白分明,命名为“U3相机1”,如图所示:

11.2:创建一个ROI检测区域 | 添加“创建ROI1”工具

点击工具栏“图像处理”,选择“创建ROI”工具,双击并设置参数值,“ROI类型”选择矩形,同时在“图像信息显示窗口”上,可以用鼠标拖拽检测矩形区域的边框调整位置或形状,以使需要检测的字符在矩形区域内部,命名为:创建ROI1,如图所示:

>>提示:

*我们一般要识别一行文本之前,需要创建一个ROI区域,这个ROI作为后面“字符识别”工具的检测区域;

*区域的设置可以在添加“创建ROI1”工具时进行调整,也可以后期双击“创建ROI1”工具进入参数设置窗口进行调整。

11.3:字符识别 | 添加“字符识别1”工具

点击工具箱“识别工具”,选择“字符识别”工具,双击并设置参数值,ROI勾选后选择“创建ROI1”工具的区域,语言默认为“eng”,字符排版选择“一行文本”,命名为“字符识别1”如图所示:

>>提示:

*由于采集图像有可能和本示例中的图像不同,您识别的结果并不一定与本示例的结果完全一致;

*在“字符识别”工具的参数设置界面,我们可以通过“运行”按钮进行读取测试,读取的字符结果会出现在“结果”文本框内,同时可以在“图像信息显示窗口”看到用紫色方框标识的每个字符的位置;

*如果我们发现,当“语言”参数选择“eng”默认字体库,识别结果不准确,这时就需要进行字符训练,生成一个针对我们所要识别字体的字体库,这里我们将这个字体库命名为“KSJ”。字符的训练需要训练您所有可能出现的字符,在这个示例中,我们需要训练S,N,:,0~9这13个字符即可。

11.4:训练字符 | 创建一个“KSJ”字体库

对“字符识别”工具参数进行调整,点击“训练”标签,单击“添加”按钮,这时会把当前检测区域的图片添加进进来,作为字符训练的样本图片,再点击“开始训练”按钮,对样本图片进行字符训练,创建“KSJ”字体库,创建成功后,“KSJ”会出现在“主要设置”页面下的“语言”列表里,我们选择并使用它,如图所示:

>>提示:

*在训练窗口,当填写训练字符时,相应字符的外框会变成红色,外框也可以通过左、上、右、下进行编辑。另外对于相同的字符,您可以只训练一次,比如上图示例中有两个3和两个0,您可以只填写其中一个,另一个可以不填写,也可以都填写;

*如果之前有训练过的同名字体,在“警告”界面点击“确定”按钮后,之前训练的字体会被本次训练的字体覆盖。

11.5:显示识别字符 | 添加“显示字符1”和“立即显示1”工具

这个过程我们在前面示例中已经多次操作过,这里只给出简单的操作图示。

>>提示:

*由于编辑工程文件过程中,如果不添加立即显示工具,检测结果的查看会不方便,所以即使检测工具的参数没有完全设置好之前,也可以先添加显示相关的工具,方便查看结果并随时对检测工具的参数进行修改。

11.6:运行工程文件

点击“运行”,然后把其他标签放置在识别区域,这时我们会发现对于我们已经训练过的字符S,N,:,0,1,2,3,6,7是可以正常识别的,但是对于我们没有训练过的其他字符识别不正确,如4,5,8,9,这是由于“KSJ”字体库没有对这些字符进行过训练。如下图所示,字符9识别为0:

>>提示:

*通过11.4的训练,我们已经训练了一个“KSJ”字体库,其中只训练了S,N,:,0,1,2,3,6,7这9个字符,还有4,5,8,9可能出现的字符没有进行训练,这时如果语言选择“KSJ”字体库,“字符识别1”工具的识别结果只会出现已经训练的字符,对没有训练的字符会识别错误。所以我们要对其他字符再进行训练,我们也可以采集一张字符完整的图像,进行一次性训练,也可以在原有已经训练的字体上进行追加字符训练。另外,即使是已经训练过的字符,我们也可以进行多次训练,一旦发现有识别不出来的已经训练过的字符,我们就可以再次训练这个字符,追加到字体库里。

11.7:追加训练字符 | 为“KSJ”字体库追加训练字符

首先双击“U3相机1”,这时“图像信息显示窗口”会显示实时图像,把带有追加字符的标签放置在采集识别区域内,然后退出“U3相机1”的参数设置界面。双击“字符识别1”工具,进入参数设置窗口,对“KSJ”字体库追加训练字符,方法与11.4步骤类似,如图所示:

>>提示:

*在追加训练字符时,对于不需要再次训练的字符可以不用填写字符。您可以重复执行11.7这个步骤完成所有字符的训练,直到可以准确可靠的识别;

*训练过的“KSJ”字体库只能在创建它的“字符识别”工具中进行追加训练,在创建“KSJ”字体库之外的“字符识别”工具中可以使用“KSJ”字体库,但不能追加字符训练。如果在创建“KSJ”字体库之外的“字符识别”工具中训练同名的“KSJ”字体库,将不会进行追加训练,而会覆盖原来的“KSJ”字体库,这点需要大家注意一下。

拓展学习 

1、可以尝试添加一个“创建ROI2”和“字符识别2”工具,使用“KSJ”字体库或新建字体库,训练并识别其他行的字符。

2、可以尝试使用“串口”或“网口”工具,将识别到的字符信息发送给上位机。

-------------------------------------------------------------

文档示例相关工程文件及仿真图片下载链接地址

https://pan.baidu.com/s/1FQF5FaYP6grrJvIjKvYo3Q
提取码:yhqm

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注