使用VNCoreMLModel进行图像识别

时间:2018-08-22 22:33:12

标签: swift image-recognition cvpixelbuffer

我是Swift的新手,目前正在使用VNCoreMLModel识别对象的项目。该方法实时返回并打印观测值,但是我想添加一个函数,当VNCoreMLRequest匹配预定义的单词时,该函数会触发弹出窗口。

我在先前的项目中使用过CIImage,它成功地将静态图像与预定义的单词进行了匹配,但是我试图了解如何以及是否可以使用CVPixelBuffer执行此功能,或者是否需要或可以创建一种新的对象识别方法?

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
        //        print("Camera was able to capture a frame:", Date())

        guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }


        guard let model = try? VNCoreMLModel(for: Inceptionv3().model) else { return }
        let request = VNCoreMLRequest(model: model) { (finishedReq, err) in


            guard let results = finishedReq.results as? [VNClassificationObservation], let matchedResult = results.first else { return }

            guard let firstObservation = results.first else { return }

            print(firstObservation.identifier, firstObservation.confidence)

            DispatchQueue.main.async {
                self.confidenceLabel.text = "\(firstObservation.identifier) \(firstObservation.confidence * 100)"

                            if matchedResult.identifier.contains(self.words.word) {
                                print("Image matched")
                                self.showCaptureButton()

                            } else

                            { self.hideCaptureButton()}

                }
            }

        try? VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:]).perform([request])

}

0 个答案:

没有答案