Halcon一维码识别
为什么一维码识别成一节原因是没有设置码制把码制设置成auto了。和二维码识别一样提高识别率关键是预处理调节参数的意义不是很大一旦设置了正确的参数关键还是的看图像预处理。1、低分辨率场景下的条码识别低分辨率场景下条码的黑白间隔区分不明显。在条码中一个黑色矩形条和黑色矩形条之间的白色间隔都成为元素(element)。如何提高低分辨率场景下的条码识别率需要设置两个参数* 参数1: 元素最小尺寸* element_size_min: 句柄能识别的最小元素尺寸.* 参数2: 小元素识别鲁棒性检测开启* small_element_robustness: 小元素鲁棒性检测* 创建句柄create_bar_code_model([], [], BarCodeHandle)* 设置参数set_bar_code_param(BarCodeHandle, element_size_min, 1.0)set_bar_code_param(BarCodeHandle, small_element_robustness, true)通过以上设置可以实现低分辨率下的条码的稳定识别。2、低分辨率的场景下可以通过旋转图像提高条码的识别率通过旋转可以在一定程度上增大元素的尺寸从而提高条码的识别率3、存在轻微畸变的场景下(比如不平整的包装袋等)如果在轻微的畸变条码不呈现为直线出现轻微的变形。可以通过设置参数实现对小畸变的适应但对于严重畸变的场景无法有效适用。* 畸变适应参数element_size_variable: 畸变适应参数* 创建句柄create_bar_code_model([], [], BarCodeHandle)* 设置参数set_bar_code_param(BarCodeHandle, element_size_variable, true)4、读取场景内特定方向的条码比如场景内存在多个条码可以通过设定所需的条码角度进行选择性的读取。* 参数orientation 和 orientation_tol* orientation表示基准角度* orientation_tol表示角度范围* 例如 orientation 10; orientation_tol10;表示的角度范围是0 ~20度* 创建条码句柄create_bar_code_model([], [], BarCodeHandle)* 设置参数set_bar_code_param(BarCodeHandle, orientation, 10)set_bar_code_param(BarCodeHandle, orientation_tol, 10)5、读取场景内特定尺寸的条码比如场景内存在多个条码可以通过设定所需的条码尺寸进行选择性的读取。* barcode_width_min: 条码最小宽度* barcode_height_min: 条码最小高度6、提高识别的效率最小对比度的设定‘contrast_min’对比度是指黑色元素与白色元素的灰度对比最小对比度是指对比度超过设定值的区域才被认为是条码的疑似区域通过提高这个值可以降低候选区域的数量从而提高条码识别的效率。扫描线的数量‘num_scanlines’当定位到条码所在区域之后find_bar_code算子会在区域之上绘制扫描线默认扫描线的数量是10条。10条扫描线依次识别直到成功识别到条码内容终止识别。也就是说有的条码1次就可以识别到有的条码需要经历多次因此扫描线的数量越大执行效率越低。