OCR 集成到 Camera2
OCR integration to Camera2
我需要一些关于我未来项目的建议。我正在为一些 ID 文档开发 OCR 项目,为此我已经集成了 card.io 和 tess-two 并为我的项目覆盖了这个源。但我的主要目的是关于相机。我使用已在 card.io 源代码中实现的 Camera1。但是当谈到 google 开发者时,他们强烈推荐 Camera2。当我尝试阅读我的文档时,我遇到了一些关于聚焦、部分模糊等问题。我的大部分算法都在 Native 端。如果有人已经体验过这些技术,您能推荐什么?如果我将我的代码从 camera1 集成到 camera2,我可以获得更好的结果吗?感谢阅读我的大问题 ;)
Camera2的使用方法就不给你说了API,你自己去看看试试吧
一般做法:
在您的相机管理器中实现 OnImageAvailableListener 界面 class
public final class CameraManager implements ImageReader.OnImageAvailableListener {
@Override
public synchronized void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
if (image != null) {
analyzeFrame(image);
}
}
创建ImageReader并在相机打开前初始化
private ImageReader imageReader;
private void initialize() {
//I'm using YUV_420_888 for streaming
//you may use any supported format from:
//https://developer.android.com/reference/android/graphics/ImageFormat.html
imageReader = ImageReader.newInstance(PREVIEW_WIDTH, PREVIEW_HEIGHT, ImageFormat.YUV_420_888, 1);
imageReader.setOnImageAvailableListener(this, null);
}
在相机打开后将imageReader
的表面添加到CaptureRequest.Builder
Surface imageSurface = imageReader.getSurface();
//...
previewRequestBuilder.addTarget(imageSurface);
用analyzeFrame
方法处理每一帧
private void analyzeFrame(Image image) {
//...<-- image processing
image.close();
}
Which Camera api you use?
If i integrate my codes from camera1 to camera2, can i get better
results?
简短的回答是否,你会得到相同的帧来处理
If anyone have already experienced with these technologies, what could
you recommend?
我建议你使用 tess-two, pay attention on OcrRecognizeAsyncTask
我需要一些关于我未来项目的建议。我正在为一些 ID 文档开发 OCR 项目,为此我已经集成了 card.io 和 tess-two 并为我的项目覆盖了这个源。但我的主要目的是关于相机。我使用已在 card.io 源代码中实现的 Camera1。但是当谈到 google 开发者时,他们强烈推荐 Camera2。当我尝试阅读我的文档时,我遇到了一些关于聚焦、部分模糊等问题。我的大部分算法都在 Native 端。如果有人已经体验过这些技术,您能推荐什么?如果我将我的代码从 camera1 集成到 camera2,我可以获得更好的结果吗?感谢阅读我的大问题 ;)
Camera2的使用方法就不给你说了API,你自己去看看试试吧
一般做法:
在您的相机管理器中实现 OnImageAvailableListener 界面 class
public final class CameraManager implements ImageReader.OnImageAvailableListener {
@Override
public synchronized void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
if (image != null) {
analyzeFrame(image);
}
}
创建ImageReader并在相机打开前初始化
private ImageReader imageReader;
private void initialize() {
//I'm using YUV_420_888 for streaming
//you may use any supported format from:
//https://developer.android.com/reference/android/graphics/ImageFormat.html
imageReader = ImageReader.newInstance(PREVIEW_WIDTH, PREVIEW_HEIGHT, ImageFormat.YUV_420_888, 1);
imageReader.setOnImageAvailableListener(this, null);
}
在相机打开后将imageReader
的表面添加到CaptureRequest.Builder
Surface imageSurface = imageReader.getSurface();
//...
previewRequestBuilder.addTarget(imageSurface);
用analyzeFrame
方法处理每一帧
private void analyzeFrame(Image image) {
//...<-- image processing
image.close();
}
Which Camera api you use?
If i integrate my codes from camera1 to camera2, can i get better results?
简短的回答是否,你会得到相同的帧来处理
If anyone have already experienced with these technologies, what could you recommend?
我建议你使用 tess-two, pay attention on OcrRecognizeAsyncTask