Ole*_*huk 3 swift swift4 apple-vision
我正在使用Vision框架来处理图像。我正在使用的函数运行良好,在完成处理程序中不返回任何错误,但结果为空。
这是我的功能:
func recognizeImage() {
let request = VNDetectFaceRectanglesRequest { (res: VNRequest, error: Error?) in
print("Reuslt : \(res.accessibilityActivationPoint)")
}
if let cgContet = image.image.cgImage {
let handler = VNImageRequestHandler(cgImage: cgContet)
try? handler.perform([request])
}
}
Run Code Online (Sandbox Code Playgroud)
函数的结果是:
Reuslt : (0.0, 0.0)
Run Code Online (Sandbox Code Playgroud)
如果你想检测人脸并在每个人脸上画一个矩形,试试这个:
let request=VNDetectFaceRectanglesRequest{request, error in
var final_image=UIImage(named: image_to_process)
if let results=request.results as? [VNFaceObservation]{
print(results.count, "faces found")
for face_obs in results{
//draw original image
UIGraphicsBeginImageContextWithOptions(final_image.size, false, 1.0)
final_image.draw(in: CGRect(x: 0, y: 0, width: final_image.size.width, height: final_image.size.height))
//get face rect
var rect=face_obs.boundingBox
let tf=CGAffineTransform.init(scaleX: 1, y: -1).translatedBy(x: 0, y: -final_image.size.height)
let ts=CGAffineTransform.identity.scaledBy(x: final_image.size.width, y: final_image.size.height)
let converted_rect=rect.applying(ts).applying(tf)
//draw face rect on image
let c=UIGraphicsGetCurrentContext()!
c.setStrokeColor(UIColor.red.cgColor)
c.setLineWidth(0.01*final_image.size.width)
c.stroke(converted_rect)
//get result image
let result=UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
final_image=result!
}
}
//display final image
DispatchQueue.main.async{
self.image_view.image=final_image
}
}
guard let ciimage=CIImage(image:image_to_process) else{
fatalError("couldn't convert uiimage to ciimage")
}
let handler=VNImageRequestHandler(ciImage: ciimage)
DispatchQueue.global(qos: .userInteractive).async{
do{
try handler.perform([request])
}catch{
print(error)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4133 次 |
| 最近记录: |