iOS根据相册图片识别条形码、二维码以及脸部特征

首先介绍一下CIDetector,CIDetector 支持文本,二维码,脸部特征和图片文本的识别.

/* Specifies a detector type for face recognition. */
@available(iOS 5.0, *)
public let CIDetectorTypeFace: String/* Specifies a detector type for rectangle detection. */
@available(iOS 8.0, *)
public let CIDetectorTypeRectangle: String/* Specifies a detector type for barcode detection. */
@available(iOS 8.0, *)
public let CIDetectorTypeQRCode: String/* Specifies a detector type for text detection. */@available(iOS 9.0, *)
public let CIDetectorTypeText: String

原生识别二维码

    // 获取二维码func WM_FUNC_getQrCode(qrcodeImg:UIImage) -> Void {if let img:CIImage = CIImage.init(image: qrcodeImg) {if let qrDetector =  CIDetector.init(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy:CIDetectorAccuracyHigh])  {let reultFeature = qrDetector.features(in: img);for feature in reultFeature {if feature.isKind(of: CIQRCodeFeature.self) {let qrFeature:CIQRCodeFeature = feature as! CIQRCodeFeatureprint("qrcode == \(qrFeature.messageString ?? "")")}else{print("not CIQRCodeFeature")}}}else{print("CIDetector init error")}}else{print("CIImage init error")}}

原生识别脸部特征

    //获取脸部特征func WM_FUNC_getFace(_ image:UIImage) -> Void {let imageInput:UIImage = image;if let cgImage = imageInput.cgImage {let ciImage:CIImage = CIImage.init(cgImage: cgImage)let context:CIContext = CIContext.init(options: nil);let param:[String:Any] = [CIDetectorAccuracy:CIDetectorAccuracyHigh]if let faceDetector:CIDetector = CIDetector.init(ofType: CIDetectorTypeFace, context: context, options: param) {let detectResult = faceDetector.features(in: ciImage)//                let resultView:UIView = UIImageView.init(frame: imageInput.size);//                [self.view addSubview:resultView];for feature in detectResult {if feature.isKind(of: CIFaceFeature.self){let faceFeature:CIFaceFeature = feature as! CIFaceFeature;//左眼if (faceFeature.hasLeftEyePosition) {//                            var leftEyeView:UIView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: 5, height: 5));//                            leftEyeView.center = faceFeature.leftEyePosition//                            leftEyeView.layer.borderWidth = 1;//                            leftEyeView.layer.borderColor = UIColor.red.cgColor;                            [resultView addSubview:leftEyeView];}//右眼else if (faceFeature.hasRightEyePosition) {}//嘴else if (faceFeature.hasMouthPosition) {}else{//整个脸部的位置}}}}else{print("CIDetector init error")}}else{print("CIImage init error")}}

原生识别条形码

VNDetectBarcodesRequest 只要iOS11.0+以上支持,支持iOS11.0-以下请使用其他方案

    // Create a barcode detection-requestlet barcodeRequest = VNDetectBarcodesRequest(completionHandler: { request, error inguard let results = request.results else { return }// Loopm through the found resultsfor result in results {// Cast the result to a barcode-observationif let barcode = result as? VNBarcodeObservation {// Print barcode-valuesprint("Symbology: \(barcode.symbology.rawValue)")// Print barcode stringif let payload = barcode.payloadStringValue {print("Payload: \(payload)")}if let desc = barcode.barcodeDescriptor as? CIQRCodeDescriptor {let content = String(data: desc.errorCorrectedPayload, encoding: .utf8)// FIXME: This currently returns nil. I did not find any docs on how to encode the data properly so far.print("Payload: \(String(describing: content))")print("Error-Correction-Level: \(desc.errorCorrectionLevel)")print("Symbol-Version: \(desc.symbolVersion)")}}}})// 获取条形码func WM_FUNC_getInfoByImage() -> Void {let myImage = UIImage.init(named: "1631511918532.jpg");// Create an image handler and use the CGImage your UIImage instance.guard let image = myImage?.cgImage else { return }let handler = VNImageRequestHandler(cgImage: image, options: [:])// Perform the barcode-request. This will call the completion-handler of the barcode-request.guard let _ = try? handler.perform([barcodeRequest]) else {return print("Could not perform barcode-request!")}}

iOS根据相册图片识别条形码、二维码以及脸部特征相关推荐

  1. 用python识别条形码,二维码并且定位标注

    原理很简单用OpenCV处理图片pyzbar识别条形码 python里面有一个包pyzbar可以用识别二维码和条形码,我们再结合OpenCV处理图片的功能就可以标注出二维码位置内容 我们生活中的常见的 ...

  2. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到

    技术选型 1,前端 小程序原生MINA框架 css JavaScript Wxml 2,管理后台 云开发Cms内容管理系统 web网页 3,数据后台 小程序云开发 云函数 云开发数据库(基于Mongo ...

  3. iOS --- 识别相册中图片上的二维码

    1.打开相册 let vc = TZImagePickerController(maxImagesCount: 1, delegate: self)!vc.allowTakeVideo = false ...

  4. IOS人脸识别和二维码识别

    人脸识别应用于许多领域.二维码的识别更是疯狂.下面,我们一起去看看简单的人脸识别和二维码识别. 1.测试数据的展示(人脸). 原图: 1.人脸的大小 // 人脸大小 CGRect FaceRect  ...

  5. OpenCV(项目)二维码识别(二维码、条形码)

    目录 过程 1.获取图片中的二维码信息 2.获取视频中的二维码信息 3.检测出二维码框 4.显示数据 5.添加数据,判断二维码是否授权 5-1:.添加数据 5-2.读取文件信息,放入数组 5-3.判断 ...

  6. Opencv+Zbar二维码识别(标准条形码/二维码识别)

    使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...

  7. GM65条形码二维码扫描识别模块与STM32学习

    目录 模块介绍: 简介: 原理介绍: 工作流程: 技术参数: 修改配置: 代码介绍: 串口函数: 主函数: 模块介绍: 简介: GM65 条形码二维码扫描识别模块是一种基于激光扫描头的识别设备 原理介 ...

  8. 【python 图片识别】python识别图片是不是包含二维码

    近几天在研究二维码的识别,主要是通过python代码来识别特定图片内是否包含二维码.方法有分类,还有下面我介绍的直接法. 需要安装库 pip install pyzbar pip install op ...

  9. OPT小讲堂 ∣ SciSmart图像识别之条形码识别、二维码识别

    在第十三课中,我们讲了图像识别中的OCR:字符识别. 本课将继续介绍图像识别中的条形码识别.二维码识别.我们将分别介绍二者的基本概念.操作流程.参数解析及应用案例. 条形码识别 条形码识别的概念 条形 ...

  10. 魔坊APP项目-15-邀请好友(业务逻辑流程图、服务端提供邀请好友的二维码生成接口、客户端通过第三方识别微信二维码,服务端提供接口允许访问、App配置私有协议,允许第三方应用通过私有协议,唤醒APP)

    邀请好友 1.业务逻辑流程图 客户端提供点击"邀请好友"以后的页面frame,html/invite.html,代码: <!DOCTYPE html> <html ...

最新文章

  1. 运维基础--Linux用户和组的管理
  2. 数据中台实战(六):交易分析
  3. linux软中断分析,linux操作系统下的软中断问题分析_linux教程
  4. 顺序表应用3:元素位置互换之移位算法
  5. python Anaconda2安装OpenCV2
  6. R,让你的数据分析更简便!
  7. Oracle 1204 RAC failover 测试 (一)
  8. 2×3卡方检验prism_戏说卡方检验
  9. 传智播客 机器学习基础 学习笔记
  10. java 彻底删除文件_如何删除java文件
  11. 简单测试.NET开源的PDF文档生成器QuestPDF
  12. 全国各省份结婚离婚面板数据(2000-2019年)
  13. phpStorm2018安装与破解(免安装打包版)
  14. vue+file-saver+xlsx 封装导出Excel表格方法
  15. guzzle发起请求设置cookie失效
  16. java中级工程师所需的技能_java工程师简历专业技能填写样本
  17. GD25Qxxx使用笔记
  18. Python学习教程:数据类型—字符串大总结
  19. on update cascade 和on delete cascade 的作用
  20. “5G通达,AI赋能“ AI在网络规划中的应用实践

热门文章

  1. 青龙面板滴滴果园自动签到
  2. STM32——CAN通信实验
  3. 在Ubuntu18.04上安装视频播放器smplayer
  4. nginx配置简单图片显示
  5. 最全的珍贵的四大天王合照和成名历程 - 很怀念【组图】
  6. 使用Processing制作一个时钟
  7. C++经典编程题目(九)玩火柴棍游戏
  8. 看刘未鹏先生的博客的一些摘记
  9. 触摸屏与usb鼠标同时支持
  10. 中英对照泰戈尔《飞鸟集》(一)