0
我使用CIDetector來檢測UIImage中的人臉。我得到正確的面部矩形,但是當我裁剪圖像檢測到面部矩形。它不會顯示在我的圖像視圖中。CIDetector,檢測到的臉部圖像未顯示?
我已經檢查過。我的形象是不是零
這裏是我的代碼: -
@IBAction func detectFaceOnImageView(_: UIButton) {
let image = myImageView.getFaceImage()
myImageView.image = image
}
extension UIView {
func getFaceImage() -> UIImage? {
let faceDetectorOptions: [String: AnyObject] = [CIDetectorAccuracy: CIDetectorAccuracyHigh as AnyObject]
let faceDetector: CIDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: faceDetectorOptions)!
let viewScreenShotImage = generateScreenShot(scaleTo: 1.0)
if viewScreenShotImage.cgImage != nil {
let sourceImage = CIImage(cgImage: viewScreenShotImage.cgImage!)
let features = faceDetector.features(in: sourceImage)
if features.count > 0 {
var faceBounds = CGRect.zero
var faceImage: UIImage?
for feature in features as! [CIFaceFeature] {
faceBounds = feature.bounds
let faceCroped: CIImage = sourceImage.cropping(to: faceBounds)
faceImage = UIImage(ciImage: faceCroped)
}
return faceImage
} else {
return nil
}
} else {
return nil
}
}
func generateScreenShot(scaleTo: CGFloat = 3.0) -> UIImage {
let rect = self.bounds
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
let context = UIGraphicsGetCurrentContext()
self.layer.render(in: context!)
let screenShotImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
let aspectRatio = screenShotImage.size.width/screenShotImage.size.height
let resizedScreenShotImage = screenShotImage.scaleImage(toSize: CGSize(width: self.bounds.size.height * aspectRatio * scaleTo, height: self.bounds.size.height * scaleTo))
return resizedScreenShotImage!
}
}
欲瞭解更多信息,我附上值的屏幕截圖。
能否請您解釋一下什麼是我做錯了? –
@PawanJoshi我之前遇到過這個問題,我不知道爲什麼直接轉換不起作用。然而,似乎其他人也面臨這個問題:[http://stackoverflow.com/questions/40939075/unable-to-convert-ciimage-to-uiimage-in-swift-3-0](http://stackoverflow .COM /問題/ 40939075 /無法對轉換-ciimage到UIImage的功能於迅速-3-0) – chengsam