2016-09-01 4 views

答えて

4

プレビューフレームは、テキスト認識ツールを超えて送信されません。ただし、テキスト認識器をラップし、検出前にプレビューフレームを受け取るクラスを作成することができます。同様の議論を参照くださいhere

まず、テキスト認識をラップするために検出器のクラスを実装:

class MyTextRecognizer extends Detector<TextBlock> { 
    private Detector<TextBlock> mDelegate; 

    MyTextRecognizer(Detector<TextBlock> delegate) { 
    mDelegate = delegate; 
    } 

    public SparseArray<TextBlock> detect(Frame frame) { 
    // *** add your code to access the preview frame here 
    return mDelegate.detect(frame); 
    } 

    public boolean isOperational() { 
    return mDelegate.isOperational(); 
    } 

    public boolean setFocus(int id) { 
    return mDelegate.setFocus(id); 
    } 
} 

は、あなたのクラスでテキスト認識をラップして、カメラソースにあなたのクラスを渡します。これは次のようになります。

TextRecognizer textRecognizer = new TextRecognizer.Builder(context) 
     .build(); 
TextRecognizer myTextRecognizer = new MyTextRecognizer(textRecognizer); 

myTextRecognizer.setProcessor(/* include your processor here */); 

mCameraSource = new CameraSource.Builder(context, myTextRecognizer) 
     .build(); 

MyTextRecognizerが生フレームデータで最初に呼び出されます。

デバイスが回転していると、画像が直立しないことがあります。フレームのmetadata.getRotationメソッドを使用して方向を取得できます。

注意:検出メソッドが戻ったら、フレームピクセルデータにアクセスしないでください。カメラソースはイメージバッファをリサイクルするので、メソッドが返ってくると、フレームオブジェクトの内容は最終的にオーバーライドされます。

+0

ありがとうございます!私はこのソリューションを使用しています。 – amanuel

関連する問題