2017-05-04 14 views
1

향후 프로젝트에 대한 조언이 필요합니다. 일부 ID 문서에 대한 OCR 프로젝트를 개발 중이며이 때문에 이미 card.io와 tess-two를 통합했으며이 프로젝트에 대한 소스를 재정의했습니다. 하지만 제 주된 목적은 카메라에 관한 것입니다. 이미 card.io 소스에 구현 된 Camera1을 사용합니다. 그러나 구글 개발자라면 Camera2를 강력히 추천합니다. 내 문서를 읽으려고 할 때 집중, 흐리게 처리 된 부분 등에 대한 문제가 발생합니다. 알고리즘의 대부분은 기본 측면에 있습니다. 이미 이러한 기술을 경험 한 사람이 있다면 무엇을 권할 수 있습니까? 카메라 1의 코드를 카메라 2에 통합하면 더 나은 결과를 얻을 수 있습니까? 내 큰 질문을 읽어 주셔서 감사합니다;)OCR 카메라 2 통합

답변

2

Camera2 API 사용법은 설명하지 않으므로 독자적으로 읽고 시도해야합니다.


일반 접근 방식 :

public final class CameraManager implements ImageReader.OnImageAvailableListener { 

@Override 
public synchronized void onImageAvailable(ImageReader reader) { 
    Image image = reader.acquireLatestImage(); 
    if (image != null) { 
     analyzeFrame(image); 
    } 
} 

ImageReader을 만들 카메라 관리자 클래스에 OnImageAvailableListener 인터페이스를 구현하고 카메라

을 열기 전에 초기화 당신의 imageReader CaptureRequest.Builder에 후 카메라의
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); 
} 

추가 표면은

Surface imageSurface = imageReader.getSurface(); 
//... 
previewRequestBuilder.addTarget(imageSurface); 

analyzeFrame 방법을 사용 카메라 API를

private void analyzeFrame(Image image) { 
    //...<-- image processing 
    image.close(); 
} 

에서 각 프레임을 처리 열어?

Camera2 API.

카메라 코드 1을 카메라 2에 통합하면 더 나은 결과를 얻을 수 있습니까? ?

짧은 대답은 당신이 사람이 이미이 기술을 경험 한 경우 동일한 프레임

다루는거야, 아니입니다 당신은 무엇을 추천 할 수 있을까?

난 당신이, tess-two 사용 이미 나를 위해 카메라 2 미리 샘플을 만든 OcrRecognizeAsyncTask

+0

에 관심을 지불 할 것을 권 해드립니다. 하지만 소스를 1에서 2로 통합하면 너무 많은 작업이 필요합니다. 네이티브 사이드 메소드도 고려해야합니다. 그래서 Camera2에서 이미 OCR을 테스트 한 사람이 필요합니다. – JavadKhan

+1

쉬운 방법이 없습니다 (카메라 객체를 통과하고 결과를 얻습니다), 각 미리보기 프레임을 처리해야합니다 (원시 데이터 추출, 일부 원시 메소드 전달, 결과 얻기). ** card.io **는 내 접근법과 호환되지 않습니다. 왜냐하면 카메라와 이미지 프로세싱으로 자체 Activity를 시작하기 때문입니다. 우리 회사는 네이티브 (C++) OCR을 사용합니다. NDK를 사용하여 각 프레임을 처리합니다. –

+0

어떤 카메라 API를 사용합니까? 내 마지막 질문에 대답 해 주시겠습니까? "두 가지 API를 모두 사용했다면 광학 독서를 할 때 더 나은 결과를 얻었습니까?" – JavadKhan