自动识别产品编号或批次号

45 篇文章 0 订阅
7 篇文章 0 订阅

上述代码是一个OCR(Optical Character Recognition,光学字符识别)程序的脚本,用于识别特定格式的字符。它使用了一个图像处理和OCR库,可能是HALCON软件的一部分。

dev_close_window ()
dev_update_pc (‘off’)
dev_update_window (‘off’)
read_image (Image, ‘ocr/lot_number_01’)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, ‘black’, WindowHandle)
set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
dev_set_draw (‘margin’)
create_text_model_reader (‘manual’, [], TextModel)
*
set_text_model_param (TextModel, ‘char_width’, 45)
set_text_model_param (TextModel, ‘char_height’, 80)
set_text_model_param (TextModel, ‘is_dotprint’, ‘true’)
set_text_model_param (TextModel, ‘stroke_width’, 7)
set_text_model_param (TextModel, ‘uppercase_only’, ‘true’)
set_text_model_param (TextModel, ‘max_line_num’, 1)
*
read_ocr_class_mlp (‘DotPrint’, OCRHandle)
for Index := 1 to 12 by 1
read_image (Image, ‘ocr/lot_number_’ + Index$‘.2’)
dev_display (Image)
*
* Segmentation of characters
find_text (Image, TextModel, TextResultID)
get_text_object (Characters, TextResultID, ‘all_lines’)
clear_text_result (TextResultID)
*
do_ocr_word_mlp (Characters, Image, OCRHandle, ‘\d{5}[A-Z]{1}’, 3, 2, Class, Confidence, Word, Score)
*
dev_set_line_width (2)
dev_display (Image)
dev_set_colored (12)
dev_display (Characters)
dev_set_draw (‘margin’)
disp_message (WindowHandle, 'Lot number: ’ + Word, ‘window’, 12, 12, ‘black’, ‘true’)
if (Index < 12)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
endif
stop ()
endfor
clear_ocr_class_mlp (OCRHandle)
clear_text_model (TextModel)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下是程序运行结果

在这里插入图片描述
以下是代码的逐行解释和它解决的问题:

dev_close_window():关闭当前打开的窗口。
dev_update_pc(‘off’):关闭图像处理计算机的屏幕更新。
dev_update_window(‘off’):关闭窗口的屏幕更新。
read_image(Image, ‘ocr/lot_number_1’):读取名为’ocr/lot_number_1’的图像文件到变量Image。
get_image_size(Image, Width, Height):获取图像的宽度和高度。
dev_open_window(, , Width, Height, ‘black’, WindowHandle):以图像的尺寸打开一个新的窗口,背景为黑色。
set_display_font(WindowHandle, 16, ‘mono’, ‘true’, ‘false’):设置窗口中显示的字体为16号大小的单线字体。
dev_set_draw(‘margin’):设置绘制模式为边缘。
create_text_model_reader(‘manual’, [], TextModel):创建一个文本模型读取器。
set_text_model_param(…):设置文本模型参数,如字符宽度、高度、是否点阵打印、笔画宽度、是否只使用大写字母、最大行数等。
read_ocr_class_mlp(‘DotPrint’, OCRHandle):读取名为’DotPrint’的OCR类,用于点阵打印字符的识别。
for Index := 1 to 12 by 1:开始一个循环,从1到12,每次增加1。
read_image(Image, ‘ocr/lot_number_’ + Index$‘.2’):读取以’ocr/lot_number_'开头,后跟两位数字索引的图像文件。
dev_display(Image):在窗口中显示当前图像。
find_text(Image, TextModel, TextResultID):在图像中查找文本,使用之前创建的文本模型。
get_text_object(Characters, TextResultID, ‘all_lines’):获取所有行的文本对象。
clear_text_result(TextResultID):清除文本结果。
do_ocr_word_mlp(…):执行OCR识别,识别符合特定正则表达式的单词。
dev_set_line_width(2):设置绘制线条的宽度。
dev_display(Characters):显示识别到的字符。
disp_message(…):在窗口中显示一条消息,显示识别到的号码。
if (Index < 12):如果当前索引小于12,则继续显示消息。
stop():停止当前循环。
clear_ocr_class_mlp(OCRHandle):清除OCR类。
clear_text_model(TextModel):清除文本模型。
这段代码解决的问题是自动识别一系列图像中特定格式的点阵打印字符,并将识别结果以消息的形式显示在窗口中。这通常用于自动化系统中,比如在生产线上自动识别产品编号或批次号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy Monkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值