我正在使用 swift 在实时摄像头中检测文本,但帧未识别出正确的单词。当我尝试检测图像中的文本并且帧绘制在世界各地时,该应用程序运行良好。
对于实时摄像头,我所做的是创建一个捕获视频会话 并实现AVCaptureVideoDataOutputSampleBufferDelegate然后在didOutput我正在获取缓冲图像并将其转换为UIImage并检测其中的文本。但在这种情况下,相同的策略无法正常工作。
此外,在开始视频会话后每次调用didOutput,我想要的是仅在用户移动他的相机或查找文本时调用一个函数。
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
print("didOutput")
// do stuff here
guard let hasImage = CMSampleBufferGetImageBuffer(sampleBuffer) else {
print("no image")
return
}
let imageBuffer = hasImage
let ciimage : CIImage = CIImage(cvPixelBuffer: imageBuffer)
liveCamImage = self.convert(cmage: ciimage)
DispatchQueue.main.async {
self.drawRectOnText(imagefromCam:self.liveCamImage)
}
}
有什么解决办法吗?//转换函数
func convert(cmage:CIImage) -> UIImage
{
let context:CIContext = CIContext.init(options: nil)
let cgImage:CGImage = context.createCGImage(cmage, from: cmage.extent)!
let image:UIImage = UIImage.init(cgImage: cgImage)
return image
}