ios - 我需要使用 iOS 人脸检测从实时视频中检测人脸,然后将每个人脸裁剪成一组人脸
问题描述
我有面部检测工作,并且可以按时间间隔在每个面部周围添加一个红色矩形。我无法解决的问题是将每个检测到的人脸裁剪成一组人脸图像。我知道检测到的面部和裁剪部分的坐标系是相反的,但无法弄清楚如何正确裁剪面部。如何从原始“capturedImage”产生的面孔中裁剪每张面孔..?
let image = CIImage.init(cvPixelBuffer: capturedImage)
//imgFull.image = UIImage(ciImage: image.oriented(CGImagePropertyOrientation.right).cropped(to: CGRect.init(x: 50, y: 50, width: 200, height: 200)));
let imageOptions = NSDictionary(object: NSNumber(value: 8) as NSNumber, forKey: CIDetectorImageOrientation as NSString)
let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)!
let faces = faceDetector.features(in: image, options: imageOptions as? [String : AnyObject])
let detectFaceRequest = VNDetectFaceRectanglesRequest { (request, error) in
DispatchQueue.main.async {
//Loop through the resulting faces and add a red UIView on top of them.
if let faces = request.results as? [VNFaceObservation] {
for face in faces {
let faceView = UIView(frame: self.faceFrame(from: face.boundingBox))
let newImage: CGImage = self.convertCIImageToCGImage(inputImage: image.oriented(CGImagePropertyOrientation.right))
let imageRef: CGImage = (newImage.cropping(to: face.boundingBox))!
let croppedImage = UIImage(cgImage: imageRef)
self.imgFull.image = croppedImage;
解决方案
推荐阅读
- java - 如何保护使用@StreamListener 注释的方法?
- google-api - 用于从 google fit api 捕获每日步数的 API 调用
- excel - 如何循环通过合并的单元格(并从一维数组中填充值)?
- python - 在 swagger 文件配置中,可以在路径中获取 2 个参数
- c++ - glUniform1ui 的成本
- assembly - 如何检查文件路径是否存在
- c# - 如何在 ASP.Net Core MVC 模型中使用 C# 解析来自 rest api 的 json 数据并将其显示在 HTML 页面上
- ios - iOS:用户对用户订阅的应用内购买?
- git - Git - 是否可以获取与本地分支关联的拉取请求?
- javascript - rxjs订阅在被重写时是否被破坏?