Штрих-код Vision API — Ограничьте область обнаружения центральным прямоугольником экрана.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Штрих-код Vision API — Ограничьте область обнаружения центральным прямоугольником экрана.

Сообщение Anonymous »

Я использую сканер штрих-кода в своем приложении. Я хотел бы ограничить зону обнаружения. следовал приведенной ниже логике, но на некоторых устройствах это не работает должным образом.

//Пытаюсь обрезать центральную часть кадра:

Код: Выделить всё

 public class BoxDetector extends Detector {
private Detector mDelegate;
private int mBoxWidth, mBoxHeight;

public BoxDetector(Detector delegate, int boxWidth, int boxHeight) {
mDelegate = delegate;
mBoxWidth = boxWidth;
mBoxHeight = boxHeight;
}

public SparseArray detect(Frame frame) {
int width = frame.getMetadata().getWidth();
int height = frame.getMetadata().getHeight();
int right = (width / 2) + (mBoxHeight / 2);
int left = (width / 2) - (mBoxHeight / 2);
int bottom = (height / 2) + (mBoxWidth / 2);
int top = (height / 2) - (mBoxWidth / 2);

YuvImage yuvImage = new YuvImage(frame.getGrayscaleImageData().array(), ImageFormat.NV21, width, height, null);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(left, top, right, bottom), 100, byteArrayOutputStream);
byte[] jpegArray = byteArrayOutputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegArray, 0, jpegArray.length);

Frame croppedFrame =
new Frame.Builder()
.setBitmap(bitmap)
.setRotation(frame.getMetadata().getRotation())
.build();

return mDelegate.detect(croppedFrame);
}

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

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

}
//Это мой урок по созданию детектора штрих-кода:

Код: Выделить всё

     Detector barcodeDetector = new BoxDetector(new BarcodeDetector.Builder(context).setBarcodeFormats(Barcode.ALL_FORMATS).build(), metrics.widthPixels, metrics.heightPixels);
//BoxDetector myDetector = new BoxDetector(barcodeDetector, metrics.widthPixels, metrics.heightPixels);

BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay, this);
barcodeDetector.setProcessor(
new MultiProcessor.Builder(barcodeFactory).build());
@SuppressWarnings("SuspiciousNameCombination")
CameraSource.Builder builder = new CameraSource.Builder(getApplicationContext(), barcodeDetector)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedPreviewSize(metrics.heightPixels, metrics.widthPixels)
.setRequestedFps(30.0f);
Где и чего мне не хватает. Переслал всю ветку GitHub, связанную с этой проблемой. Но я не смог найти решение. Пожалуйста, предложите ссылку или решение этой проблемы.

Подробнее здесь: https://stackoverflow.com/questions/489 ... -of-screen
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»