我知道在iOS 7中现在有AVMetadataMachineReadableCodeObject类,AFAIK只代表条形码.我更感兴趣的是检测和阅读一个短串的内容.这可能使用公开的API方法,或者您可能知道的其他第三方SDK?
还有一个视频的进程:
https://www.youtube.com/watch?v=c7swRRLlYEo
最好,
解决方法
处理直播视频的最佳起点是a project I found on GitHub.这是使用AVFoundation框架,并实现AVCaptureVideoDataOutputSampleBufferDelegate方法.
一旦拥有图像流(视频),您可以使用OpenCV来处理视频.在通过Tesseract运行之前,您需要确定您想要的OCR图像中的区域.您必须使用过滤功能,但您采用OpenCV的广泛步骤如下:
>使用cv :: cvtColor(inputMat,outputMat,CV_RGBA2GRAY)将图像转换为B& W;
>阈值图像以消除不必要的元素.您指定要消除的阈值,然后将其他所有内容设置为黑色(或白色).
>确定形成框的边界(或任何正在处理的)的线.如果您已经删除了除所需区域之外的所有内容,或使用HoughLines算法(或概率版本,HoughLinesP),则可以创建“边框”.使用它,您可以确定线路交叉点以查找拐角,并使用拐角来扭曲所需区域,以将其拉直成一个正确的矩形(如果您的应用程序中需要此步骤)之前的OCR.
>使用Tesseract OCR库处理图像的部分以获得结果文本.可以为OpenCV中的字母创建训练文件,以便您可以在没有Tesseract的情况下阅读文本.这可能更快,但也可能是更多的工作.在App Store的情况下,他们正在做类似的操作,以便在原始图像上显示被覆盖的文本.这增加了很酷的因素,所以它只取决于你需要什么.
其他一些提示:
>我用这本书“Instant OpenCV”快速入门.这是非常有帮助的
>从OpenCV.org/downloads.html下载OpenCV for iOS
>我发现自适应阈值非常有用,您可以通过搜索“OpenCV adaptiveThreshold”来阅读所有关于它的内容.另外,如果您的光和暗元素之间的图像很少,您可以使用Otsu’s Binarization.这可以根据灰度图像的直方图自动确定阈值.