Я обнаруживаю текст в камере в реальном времени, используя функцию 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
}