使用BlinkID iOS SDK如何获取证件裁剪矫正图与未裁剪原图?
解决BlinkID获取未裁剪正面原始图像的问题
核心配置与获取逻辑
你混淆了fullDocumentImage和原始相机帧的配置逻辑,要拿到未裁剪的原始正面图像,得单独启用原始帧采集相关配置,而非仅依赖returnFullDocumentImage:
1. 启用原始相机帧采集
初始化扫描识别器(比如BlinkIdSingleSideRecognizer或对应证件的识别器)时,必须设置returnCameraFrame = true,这个参数才是控制是否返回未处理原始相机帧的关键:
// 示例:单面证件识别器配置 let recognizer = BlinkIdSingleSideRecognizer() // 保留原有配置,用于获取处理后的裁剪矫正图 recognizer.returnFullDocumentImage = true recognizer.encodeFullDocumentImage = true // 新增配置,开启原始相机帧返回 recognizer.returnCameraFrame = true
2. 正确读取原始帧数据
在扫描结果回调中,不要访问frontCameraFrame(该属性仅在部分特定识别器/Overlay中存在),应从识别器结果的cameraFrame属性获取:
func didOutput(results: [RecognizerResult]) { guard let result = results.first as? BlinkIdSingleSideRecognizerResult else { return } // 获取处理后的裁剪矫正图(原需求) let processedFrontImage = result.fullDocumentFrontImage?.image // 获取未裁剪的原始相机帧 if let rawCameraFrame = result.cameraFrame?.image { // 此处即为所需的未处理原始UIImage } }
3. 适配旧版本差异
若你的BlinkID版本较旧,returnCameraFrame可能需要在RecognizerSettings层级配置,而非直接在识别器实例上设置:
let settings = BlinkIdOverlaySettings() settings.returnCameraFrame = true // 将配置关联到扫描控制器
常见误区说明
fullDocumentFrontImage的设计目标就是返回裁剪后的证件区域图,无论如何配置都不会返回全帧原始图,它的作用是提供已处理好的证件图像frontCameraFrame并非通用属性,仅在部分特定场景下可用,通用获取方式是读取识别器结果的cameraFrame
内容的提问来源于stack exchange,提问作者Mapedd
相关产品推荐
相关产品推荐

