电表条码扫描--检测/识别

1. 项目介绍

      需要进行单相电表/三项电表/互感器上的条码扫描,主要为code128码;在一个集装盒内,整箱存放每类电表,其中互感器-4×4,单相表-3×4,三项表-2×2,其中高度差约为15cm;有下述两个方案可供选择。

1.1 康耐视扫码相机

      每个130W康耐视扫码相机(网口,24v,多个相机使用交换机连接)可以覆盖两个单相表,所以需要两个相机并排,同时扫描,方能覆盖箱子的一行,其中有重叠,但通过联机,可以消除重复项;另外,根据项目需求,要求确定哪一个位置缺少表(无聊的要求),所以,可以每个相机直接输出识别后的条码即可,#1.1,#1.2;#2.1,#2.2。

1.2 1600W工业相机

    需要覆盖整个表箱,同时达到一定的分辨率,所以采用1600w的工业相机,采集图像后,或者使用halcon或者使用opencv+zbar或者zbar进行条码扫描;

1.2.1 halcon

    不加入条码检测模块(需要自己添加?),采用ROI分割法,识别固定区域的条码,此种策略过于死板,没有良好的兼容性和扩展性。若以后需要扫描的物体大小改变,那么就不易扫描了。

1.2.2 opencv+zbar

   在没有接触zbar时,估计zbar只有识别功能,没有检测能力,所以想使用opencv中的cascade进行训练,从而使其具有检测能力,再同zbar结合,即可完成项目需求。然而,在分析测试了zbar后,确定其可以检测图像中所有的barcode,同时将其识别。其中的example讲解了如何使用,此链接提供了如何将opencv和zbar结合使用。opencv同zbar结合,可以使用opencv的API连接相机,采集图像(当然,zbar也可以);直接使用opencv对图像进行解码,不用再使用imagemagick,貌似更快些!

1.3 镜头选择

   项目最重要的一个要求为能够自动兼容三种高度的表,从而对景深要求很高,康耐视提供了两个方案,液体变焦镜头和大尺度镜头;前者已经测试ok,但费用较高(15k+)而33mm的镜头并不能达到要求。

 1.4 方案分析

      虽然费用高一些,但就镜头来说,还是选择液体变焦镜头。康耐视扫码相机可以达到目的,费用估计20k×2,那么康耐视的报价60k+。不推荐halcon,同时可以将1600w相机换为两台500w或一台普通的工业相机,所以此方案的报价约为15k+10k+5K=30k,费用减少一半。相当省钱,也可以实现该功能。

2. Zbar简记

  在上一篇blog中记录了在ubuntu下编译安装zbar的过程,另外在win下通过zbar的安装包可以直接调用dll进行开发,比较简单。刚刚开始阅读其中的代码,发现封装了很多东东,不能阅读,可能是为了保护? 检测的核心API

int zbar_scan_image (zbar_image_scanner_t *iscn,zbar_image_t *img)
略看一下,输出检测barcode的个数。

在阅读开源代码是,先关注借口API的 *.h,可以有一个直观的认识,然后再继续阅读核心关注部分。

你可能感兴趣的:(Work,Project)