HALCON如何读取低分辨率ECC200数据码?现有参数无法识别求解决方案
解决方案
1. 优先做图像预处理
低质量ECC200码识别失败90%的原因是未做光照校正和对比度增强,你提供的待识别图存在明显光照不均问题,先执行以下预处理步骤:
* 校正光照不均,提升模块对比度 emphasize (Image, ImageEmphasize, 7, 7, 2) * 平滑去除背景噪声 mean_image (ImageEmphasize, ImagePreprocessed, 3, 3)
如果对比度仍然偏低,可追加局部二值化处理:
* 局部二值化适配不均匀光照,提取码区候选域 local_threshold (ImagePreprocessed, CodeCandidateRegion, 'adapted_std_deviation', 3, 5) reduce_domain (ImagePreprocessed, CodeCandidateRegion, ImageReduced)
待识别码原图:
2. 修正2D码模型参数
你之前的参数遗漏了低质量码适配的核心配置,调整后的完整代码如下:
* 创建模型时新增极性自适应配置,适配低对比度、反色场景 create_data_code_2d_model ('Data Matrix ECC 200', ['default_parameters','small_modules_robustness','module_size_min','polarity'], ['maximum_recognition','high','1','any'], DataCodeHandleMaximum) * 调整识别阈值,适配模糊、低对比度场景 set_data_code_2d_param (DataCodeHandleMaximum,['slant_max','timeout','contrast_min','module_gap_min'],[0.52,10000,5,0]) * 仅确认码固定为12行26列时保留下方参数,否则删除避免限制识别范围 set_data_code_2d_param (DataCodeHandleMaximum,['symbol_cols','symbol_rows'],[26,12]) * 用预处理后的图像执行识别 find_data_code_2d (ImageReduced, SymbolXLDs, DataCodeHandleMaximum, ['stop_after_result_num'], [200], ResultHandles, DecodedDataStrings)
3. 可选调试方法
如果仍识别失败,可调用get_data_code_2d_results算子查看搜索失败的具体原因,针对性调整参数:
get_data_code_2d_results (DataCodeHandleMaximum, 'all_candidates', 'result_type', SearchFailReason)
内容的提问来源于stack exchange,提问作者sharkyenergy
相关产品推荐
相关产品推荐

