设置首页收藏本站
开启左侧

[文档] Halcon条码识别不出来?经验分享

[复制链接]
Princess 发表于 2019-12-26 11:09:32 | 显示全部楼层 |阅读模式
本帖最后由 Princess 于 2019-12-26 11:10 编辑

1.图像分辨率太低或者太高,导致条纹间隔像素不够,低于5个以下,一般3个像素附近基本没戏,但是太高也不行,需要zoom_image缩小分辨率即可!
2.条码中需要设置扫描线数目,通过扫描区域和扫描线扫描结果判断设置参数:
  1. create_bar_code_model ([], [], BarCodeHandle)
  2. set_bar_code_param (BarCodeHandle, 'persistence', 1)
  3. set_bar_code_param (BarCodeHandle, 'num_scanlines', 20)
  4. set_bar_code_param (BarCodeHandle, 'min_identical_scanlines', 5)
复制代码


通过以下代码获取扫描的效果:
  1. get_bar_code_result (BarCodeHandle, 0, 'status', Status)
  2. get_bar_code_result (BarCodeHandle, 0, 'status_id', StatusID)
复制代码

对应的状态码解释如下:
  1. 状态消息:
  2. 以下列表显示了可能出现的消息,分为可能出现消息的阶段。数字是“ status_id”返回的相应状态代码 (请参见下文)。

  3. 0- “未知状态”。
  4. 该扫描线的状态未知。扫描线将被忽略。

  5. 1- “成功”。
  6. 扫描线可以成功解码。

  7. 2- “边缘:未检测到足够的边缘”。
  8. 对于此条形码类型,此扫描线中的边数太少。

  9. 3- “边缘:没有足够的边缘用于起点,终点和至少一个数据字符。”
  10. 该扫描线中的边数太少而无法找到至少开始模式,停止模式和数据字符。

  11. 4- “边缘:检测到太多边缘”。
  12. 对于此条形码类型,此扫描线中的边数太高。

  13. 5- “边缘:扫描线的中心不在图像域内。”
  14. 6- '解码:找不到停止符。'
  15. 找不到特定于符号的停止字符。

  16. 7- '解码:找不到开始和结束字符。'
  17. 找不到特定于符号的开始和结束字符。

  18. 8- '解码:估计最大字符串长度时出现内部错误。'
  19. 内部错误。

  20. 9- “解码:解码单个字符时发生内部错误”。
  21. 内部错误。

  22. 10- “解码:单个字符的宽条数不等于2。”
  23. 对于条形码类型“ 2/5工业”和 “ 2/5交错”,单个字符中的宽条数必须为两个。

  24. 11- “解码:无效的编码模式。”
  25. 编码模式不对应于特定于符号系统的查询表中的字符。

  26. 12- “解码:无效的字符集混合”。
  27. 对于条形码类型“ EAN-13”和“ UPC-A”,符号的左半部分包含数字集A和B的无效混合。

  28. 13- “解码:错误解码对人类可读字符串的引用”。
  29. 例如,如果找不到足够的字符(取决于是否需要检查字符),则会发生这种情况。

  30. 14- “解码:无法检测到中央后卫图案。”
  31. 对于条形码类型“ EAN-13”,“ EAN-8”和 “ UPC-A”(包括附加变体),找不到强制性的中心防护图案。

  32. 15- “解码:无法检测到左后卫图案和/或右后卫图案”。
  33. 对于条形码类型“ EAN-13”,“ EAN-8”和 “ UPC-A”(包括附加变体),找不到强制性的左或右正常防护图案。对于条形码类型“ UPC-E”(包括附加变体),找不到左普通或右特殊保护图案。

  34. 16- “解码:无法检测到附加保护模式。”
  35. 对于包含附加符号的条形码类型“ EAN-13”,“ EAN-8”, “ UPC-A”和“ UPC-E”,找不到强制性附加保护图案。

  36. 17- “解码:无法检测到足够的取景器模式。”
  37. 对于GS1 DataBar系列的条形码类型,找不到足够的查找器模式。

  38. 18- “解码:未找到任何分段。”
  39. 对于堆叠的条形码类型,找不到分段。

  40. 19- “检查:校验和测试失败。”
  41. 校验字符测试失败。对于一个可选的校验字符条码,就可以禁用与校验字符测试“check_char”在。 set_bar_code_param

  42. 20- '检查:检查附加符号失败。'
  43. 对于包含附加符号的条形码类型“ EAN-13”,“ EAN-8”, “ UPC-A”和“ UPC-E”,数字集A和B的混合与隐式校验位不匹配。

  44. 21- '检查:检测到EAN-13条形码类型,而不是指定的类型。'
  45. 对于条形码类型“ UPC-A”及其附加变体,符号的左半部分必须由数字集A的六个符号字符组成,但是数字集A和B 的“ EAN-13”兼容组合具有被发现。尝试将条形码解码为'EAN-13'。

  46. 22- '检查:符号区域与另一个符号区域重叠'
  47. 条形码可以被解码,但是其符号区域与另一个成功解码的符号的符号区域相交。

  48. 23- “解码:无法检测到条形码类型。”
  49. 而在自动鉴别扫描方式的候选区域(参见与= “自动”),则解码器不能检测符号属于哪个条形码类型。 find_bar_codeCodeType

  50. 24- “解码:安静区域受到干扰。”
  51. 静区检查不成功。请参见 “quiet_zone”在进一步的信息。 set_bar_code_param

  52. 25- “检查:在候选区域之外检测到符号区域”。
  53. 可以对条形码进行解码,但是生成的符号区域不会与原始候选区域相交。这表明用于扫描原始候选对象的扫描线偶然发现了随机杂波或其他候选对象。

  54. 26- '解码:未达到最小代码长度(请参见min_code_length)。
  55. 找到的代码中的字符数小于所需的数量。请参见“min_code_length”在 有关最小所需码长的进一步信息。 set_bar_code_param

  56. 警告信息:

  57. 下面列出的消息仅是警告,不是错误。它们可以与状态消息结合出现,然后添加到状态消息字符串中。如果条形码阅读器在输入图像中检测到可能的质量问题,则返回这些消息。消息1000到1003仅对于成功解码的扫描线和以下条形码类型才显示:“ Codabar”,“ 2/5 Industrial”, “ 2/5 Interleaved”,“ Code 39”,“ Code 93”, “ GS1-128”,“代码128”,“ MSI”,所有 “ EAN” -,“ UPC-A” -和“ UPC-E”-变体。请注意,在扫描线已被错误解码但未被条形码读取器识别为无效的情况下,这些警告将是错误的,必须忽略。

  58. 1000- “空格太宽。”
  59. 测量的空白宽度大于内部预期的宽度。这不是解码错误,而是警告,增加空格可能会导致无法解码的符号。

  60. 1001- “空白区域太窄。”
  61. 测量的空白宽度小于内部预期的宽度。这不是解码错误,而是警告减少空格可能会导致符号无法解码。

  62. 1002- “横杠太宽。”
  63. 条形的测量宽度大于内部预期。这不是解码错误,而是警告,增加小节的宽度可能会导致无法解码的符号。

  64. 1003- “酒吧过窄。”
  65. 条形的测量宽度小于内部预期的宽度。这不是解码错误,而是警告,减小小节的宽度可能会导致无法解码的符号。

  66. 1004- “灰度值可能会饱和”。
  67. 内部算法显示符号区域中的白色像素可能会饱和。此警告不是特定于条形码类型的。对于每个扫描线都会返回此警告。例如,状态消息1001/1004或1003/1004的组合是一个提示,提示输入的图像可能曝光过度。

  68. 1005- '找不到复合组件。
  69. 线性条形码组件中的链接标志指示应该有一个复合组件,但是找不到复合组件。解码器仅返回线性分量。对于每个扫描线都会返回此警告。

  70. 1006- “用于合并。”
  71. 此消息是有关当前扫描线的某些边缘用于计算合并扫描线的信息。
复制代码

基本上通过以上两点就可以检测出有问题的条码和识别不出的条码!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表