我们在开发中,几乎所有APP都有扫码的需求。如果不是特殊需求(对扫码要求特别高),那么系统提供的AVCaptureMetadataOutput就可以满足大多数业务需求。但还是避免不了遇到一些复杂的或者画质低的二维码,无法快速识别出它们甚至直接识别不出,那么可能业务会提要优化的需求。针对系统提供的扫码我们可以在三方面入手:
一、提高采集分辨率
实例化AVCapture类对象时,可以将分辨率属性参数设置到本机支持的最高分辨率(如果发生闪退,则将分辨率降低一档直到不再闪退)
二、放大采集图像倍数
通过videoZoomFactor方法放大二维图像来提高识别率,对于远距离扫码很有效。
三、对设备采集的视频数据做二维码识别处理
就是通过AVCaptureVideoDataOutput得到视频数据CMSampleBufferRef,将CMSampleBufferRef转成CIImage 进行二维识别
网友评论