May*_*day 2 vision face-detection swift4 ios11
我正在尝试适用于 iOS 11 的 Vision 套件。我可以使用 Vision 并且我可以找到边界框值。但我不知道如何使用这些点绘制矩形。我希望我的问题很清楚。
希望您能够使用VNDetectFaceRectanglesRequest
并能够检测人脸。要显示矩形框,有很多方法可以实现。但最简单的方法是CAShapeLayer
在您检测到的每张脸的图像上绘制图层。
考虑你有VNDetectFaceRectanglesRequest
像下面
let request = VNDetectFaceRectanglesRequest { [unowned self] request, error in
if let error = error {
// somthing is not working as expected
}
else {
// we got some face detected
self.handleFaces(with: request)
}
}
let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
do {
try handler.perform([request])
}
catch {
// catch exception if any
}
Run Code Online (Sandbox Code Playgroud)
您可以实现一个handleFace
为检测到的每个人脸调用的简单方法,并使用VNFaceObservation
属性绘制一个CAShapeLayer
.
func handleFaces(with request: VNRequest) {
imageView.layer.sublayers?.forEach { layer in
layer.removeFromSuperlayer()
}
guard let observations = request.results as? [VNFaceObservation] else {
return
}
observations.forEach { observation in
let boundingBox = observation.boundingBox
let size = CGSize(width: boundingBox.width * imageView.bounds.width,
height: boundingBox.height * imageView.bounds.height)
let origin = CGPoint(x: boundingBox.minX * imageView.bounds.width,
y: (1 - observation.boundingBox.minY) * imageView.bounds.height - size.height)
let layer = CAShapeLayer()
layer.frame = CGRect(origin: origin, size: size)
layer.borderColor = UIColor.red.cgColor
layer.borderWidth = 2
imageView.layer.addSublayer(layer)
}
}
Run Code Online (Sandbox Code Playgroud)
更多信息可以在 Github repo iOS-11-by-Examples 中找到
归档时间: |
|
查看次数: |
2213 次 |
最近记录: |