识别条码,这个在图像处理中非常常见的应用,而且相对来讲比较容易。NI也提供了条码识别、二维码识别等函数。但是在应用,我们可以发现一个问题,就是NI Vision并不支持黑底白字类型的一维条码,仅支持白底黑字类型的条码,即条码的有效条必须是黑色的,而间隔必须是白色的才OK。如果是黑底白字的条码,会出现两种情况,一种是无法识别,另一种就是识别错误,因为其会找到假的黑边开始认为是条码开始的位置,这样读取出来的条码就会出错。
在视觉助手中无法识别黑底白字的条码
经过图像反转后变成白底黑字后可以识别到条码
从上面的效果可以看到,黑底白字的条码是无法识别到的,而白底黑字的条码可以正常识别。这个可能与条码的编码方式有关。因为条码识别函数需要先找到条码的开始边界。但是作为一个理想的算子,应该是会充分考虑白底黑字、黑底白字这两种情况才对的。
正确识别白底黑字条码
错误识别黑底白字条码
上图可以看到条码会忽略掉两头的一些条码信息,从而只截取中间的条码信息,这样得到的数据就是错误的。
上面的这种情况,对于二维码就可以正常的处理,所以还是算法本身不给力造成的。
白底黑字QR二维码可以识别
黑底白字QR二维码可以识别