Android 发送帧到检测器

Android 发送帧到检测器,android,android-camera,textureview,Android,Android Camera,Textureview,我在TextureView中有一个相机预览。如何将相机帧发送到我的条形码检测器 barcodeDetector = new BarcodeDetector.Builder(this) .setBarcodeFormats(Barcode.ALL_FORMATS) .build(); barcodeDetector.setProcessor(new Detector.Processor<Barcode>() { @Override public vo

我在TextureView中有一个相机预览。如何将相机帧发送到我的条形码检测器

barcodeDetector = new BarcodeDetector.Builder(this)
    .setBarcodeFormats(Barcode.ALL_FORMATS)
    .build();

barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {

    @Override
    public void release() {
    }

    @Override
    public void receiveDetections(Detector.Detections<Barcode> detections) {
        final SparseArray<Barcode> barcodes = detections.getDetectedItems();
        if (barcodes.size() != 0) {
           // do the operation
        }  
    }
}
barcodeDetector=新的barcodeDetector.Builder(此)
.setBarcodeFormats(条形码.所有_格式)
.build();
条形码检测器.setProcessor(新检测器.Processor(){
@凌驾
公开无效释放(){
}
@凌驾
公共空隙接收检测(检测器。检测){
最终SparseArray条形码=检测。getDetectedItems();
如果(条形码大小()!=0){
//做手术
}  
}
}

您需要创建一个摄像头实例并将其链接到您的探测器(该探测器已链接到处理器)

要将相机链接到SurfaceView并启动它,请使用如下代码(当SurfaceView可用时)

您有一个谷歌提供的工作示例

对于TextureView,请使用手动检测

public void onSurfaceTextureUpdated(SurfaceTexture surface) {
          // Invoked every time there's a new Camera preview frame
           mTextureView.getBitmap(bitmap);
           Frame frame = new Frame.Builder().setBitmap(bitmap).build();
           SparseArray<Barcode> barcodes = barcodeDetector.detect(frame);
      }
SurfaceTextureUpdated上的公共空间(SurfaceTexture表面){
//每次有新的摄影机预览帧时调用
mTextureView.getBitmap(位图);
Frame Frame=new Frame.Builder().setbit映射(位图).build();
SparseArray条码=条码检测器。检测(帧);
}

您需要创建一个摄像头实例并将其链接到您的探测器(该探测器已链接到处理器)

要将相机链接到SurfaceView并启动它,请使用如下代码(当SurfaceView可用时)

您有一个谷歌提供的工作示例

对于TextureView,请使用手动检测

public void onSurfaceTextureUpdated(SurfaceTexture surface) {
          // Invoked every time there's a new Camera preview frame
           mTextureView.getBitmap(bitmap);
           Frame frame = new Frame.Builder().setBitmap(bitmap).build();
           SparseArray<Barcode> barcodes = barcodeDetector.detect(frame);
      }
SurfaceTextureUpdated上的公共空间(SurfaceTexture表面){
//每次有新的摄影机预览帧时调用
mTextureView.getBitmap(位图);
Frame Frame=new Frame.Builder().setbit映射(位图).build();
SparseArray条码=条码检测器。检测(帧);
}

此示例中有SurfaceView。我需要改用TextureView。用
TextureView
替换
SurfaceView
很容易(您可以简单地按照这是谷歌的建议。如何实现它?这是一个在TextureView中使用相机的例子,我们无法理解,如何从中获取帧并将其发送到检测器。很好,它是这样工作的!
Frame Frame=new Frame.Builder().setBitmap(mTextureView.getBitmap()).build();barcodeDetector.receiveFrame(Frame);
此示例中有SurfaceView。我需要改用TextureView。用
TextureView
替换
SurfaceView
很容易(您只需按照这是谷歌的建议。如何实现它?这是一个在TextureView中使用相机的例子,我们无法理解,如何从中获取帧并将其发送到检测器。很好,它是这样工作的!
Frame Frame=new Frame.Builder().setBitmap(mTextureView.getBitmap()).build();barcodeDetector.receiveFrame(Frame);
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
          // Invoked every time there's a new Camera preview frame
           mTextureView.getBitmap(bitmap);
           Frame frame = new Frame.Builder().setBitmap(bitmap).build();
           SparseArray<Barcode> barcodes = barcodeDetector.detect(frame);
      }