إҐஔݕग़ let buffer: CVImageBuffer = ... let inputImage = CIImage(cvImageBuffer: buffer) //ᶃإۣܗऔಘϦΫΤετ let handler = VNImageRequestHandler(ciImage: inputImage) handler.perform([ VNDetectFaceRectanglesRequest(completionHandler: { (req, err) in //ᶄإۣܗͷऔಘ let req = request as! VNDetectFaceRectanglesRequest, let faces = req.results as! [VNFaceObservation], let face = faces.first.boundingBox, let rect = face.boundingBox, //ᶅإ෦ͷΓൈ͖ let faceImage: CIImage = cropImage(from inputImage, rect: rect)
إࣝผ //ᶃֶशࡁΈCoreMLϞσϧͷϩʔυ let idleClassifier = IdleClassifier() let model = VNCoreMLModel(for: idleClassifier.model) //ᶄVision+CoreMLͰਪΛ࣮ߦ let image: CIImage = ... let handler = VNImageRequestHandler(ciImage: image) try handler.perform([ VNCoreMLRequest(model: model) {(req, err) in //ᶅࣝผ݁Ռͷऔಘ let res = req.results!.first as! VNClassificationObservation let name = res.identifier let probability = Int(res.confidence * 100) print(“ࣝผ݁Ռ \(name):\(probability)%”)
ࢀߟจݙ w ͍Β͢ͱʮΞΠυϧʯͷݕࡧ݁Ռ w .BDIJOF-FBSOJOH"QQMF w ਂֶश%FFQ-FBSOJOHʢۙՊֶࣾʣ w ਂֶशʢػցֶशϓϩϑΣογϣφϧγϦʔζʣ w θϩ͔Β࡞Δ%FFQ-FBSOJOH w 5FOTPSqPXCFHJOOFST w DJGBS w ("/ (FOFSBUJWF"EWFSTBSJBM/FUXPSLTBS9JW w )PUTXBQQJOH$PSF.-NPEFMTPOUIFJ1IPOF w إೝࣝҐஔ߹Θͤͷॏཁੑ