《创建条形码句柄》create_bar_code_model ([], [], BarCodeHandle)第一个[]通用参数空列表 使用默认参数。第二个[]条形码类型专用参数空 不额外设置。BarCodeHandle输出参数创建出来的条形码模型句柄后面找条形码要用它。《设置条形码的的参数 条形码的最小单位黑条之间的最小间距》set_bar_code_param (BarCodeHandle, element_size_min, 8)BarCodeHandle你之前创建的条形码模型句柄element_size_min参数名称→条码最小元素尺寸指条码中最窄的那条黑线 / 白线的最小宽度像素barcode_width_min条形码的最小的宽度persistence 设置条形码查找的精度 0快 1 精确contrast_min 设置条形码的对比度8设定值→ 小于 8 像素的条码线条不再识别避免噪声、细小干扰被误判成条码《查找条形码》1 输入图片 2输出的区域 3 条形码句柄 4 条形码类型 5转成字符串find_bar_code (Image, SymbolRegions, BarCodeHandle, auto, DecodedDataStrings)Image输入要识别的图片你之前读进来 / 采集到的图像SymbolRegions输出条形码所在的区域→ 会框出图片里条码的位置方便显示、画图BarCodeHandle输入你之前创建的条形码模型句柄→ 就是create_bar_code_model生成的那个auto输入自动识别条码类型支持Code 128、EAN-13、UPC、QR 码、Data Matrix 等你也可以手动指定比如Code 128识别更快DecodedDataStrings输出识别出来的条码文字 / 数字《获取条形码结果》get_bar_code_result (BarCodeHandle, all, decoded_types, BarCodeResults)BarCodeHandle条码模型句柄all表示获取所有识别到的条码的结果如果一张图里有多个条码也一起返回decoded_types要获取的信息类型→已解码的条码类型比如返回[Code 128]、[EAN-13]、[QR Code]等BarCodeResults输出变量存识别到的条码类型《筛选图片》tuple_regexp_select (Files, .(jpg|bmp|png), Selection)*tuple_regexp_select 根据正则表达式进行筛选* .* 匹配所有资源* .(jpg|bmp|png) 后缀名为jpg bmp pngFiles输入所有文件的名字列表比如文件夹里有1.txt、2.jpg、3.png、4.bmp、5.exe.(jpg|bmp|png)规则正则表达式筛选条件意思只保留后缀是 jpg /bmp/png的文件Selection输出筛选后的图片文件列表最后只会剩下2.jpg、3.png、4.bmp《识别多种条形码》《二维码检测———创建二维码对象》create_data_code_2d_model (Data Matrix ECC 200, [default_parameters], [maximum_recognition], DataCodeHandle) // Data Matrix ECC 200 数据矩阵码 简称D码create_data_code_2d_model (QR Code, [], [], DataCodeHandle1) //创建QR码对象create_data_code_2d_model (PDF417, [], [], DataCodeHandle2) //创建PDF417码对象 二维码堆叠的条形结构Data Matrix ECC 200输入要识别的二维码类型→ 专门用来读Data Matrix 码一种方形的工业常用二维码。[default_parameters]输入参数组名称→ 使用默认参数组作为基础配置。[maximum_recognition]输入具体参数值→ 把模式设置为最大识别率。→ 特点识别成功率最高但识别速度会稍微慢一点适合难识别、模糊、破损的码。DataCodeHandle输出二维条码模型句柄→ 后面找二维码、读内容全靠它。《识别多二维码》《一张图多个二维码》* stop_after_result_num 批量识别参数 找到16 个二维码后立即停止提升效率《字符提取》*1 提取字符每一个区域*2 读取内置的分类器或者自定义分类器 read_ocr_class_mlp()*3 获取读取的结果*4 处理结果释放句柄*分类器* NoRej 不拒绝如果一个字符串没有匹配到 返回一个类似的字符* Rej 拒绝 如果一个字符串没有匹配到 返回一个reject*内置的分类器*Document_0-9_NoRej.omc 、OCRA_A-Z_Rej.omc*自定义分类器 通过ocr助手进行设置*字体是最好是黑色字体白色的背景read_ocr_class_mlp()FileName输入OCR 模型文件路径通常是.mlp后缀的文件Halcon 自带训练好的字体模型比如Industrial_0-9_A-Z.omcOCRHandle输出OCR 识别句柄后面识别字符必须用这个句柄《选择一个字符区》select_obj (SortedRegions, ObjectSelected, Index) //选择一个字符区域SortedRegions输入已经排好序的区域集合→ 一般是分割好的多个字符区域按从左到右排好队了ObjectSelected输出选中出来的单个区域→ 就是你挑出来的那一个字符Index输入序号数字→ 第几个Halcon 从 1 开始数→ 1 第一个字符2 第二个字符.《获取单独结果》do_ocr_single_class_mlp (ObjectSelected, ImageInvert, OCRHandle, 1, Class, Confidence)ObjectSelected输入单个字符区域→ 就是你上一步用select_obj挑出来的那一个字符ImageInvert输入反色后的图片→ 通常字符是黑字白底OCR 识别更稳定OCRHandle输入OCR 模型句柄→ 之前用read_ocr_class_mlp加载好的识别工具1输入最多返回几个结果→ 写 1 只返回可信度最高的那 1 个结果Class输出识别出来的字符→ 最终结果比如5、A、BConfidence输出可信度0~1 之间→ 越接近 1识别越准→ 比如 0.99 非常确定0.5 不确定《一次性读完》do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class1, Confidence1)SortedRegions输入多个已经排好序的字符区域→ 比如分割好的一串数字 / 字母[第1个字符, 第2个, 第3个...]ImageInvert输入反色处理后的图片→ 黑字白底OCR 识别最稳定OCRHandle输入之前加载好的 OCR 模型句柄Class1输出识别出的完整结果字符串 / 元组→ 比如输入ABC123这里直接输出[A,B,C,1,2,3]Confidence1输出每个字符对应的可信度→ 与结果一一对应数值越接近 1 越准确和上一句do_ocr_single_class_mlp的区别单个识别要循环、一个个取、一个个认批量识别直接丢一整串字符进去一次全部识别完→ 代码更简单、速度更快