Как обнаружить заполненные круги (радиопроизводительные кнопки) из отсканированного документа в Android с помощью Java?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как обнаружить заполненные круги (радиопроизводительные кнопки) из отсканированного документа в Android с помощью Java?

Сообщение Anonymous »

Я работаю над приложением Android, которое сканирует бумажный документ, используя gmsdocumentscanner. Моя цель состоит в том, чтобы определить, какие круги заполнены, аналогичны радиопроизводству в форме. После сканирования документа мне нужно обнаружить маркированный круг, а также ассоциированную с этим текст или значок. Я делюсь здесь фрагментом для лучшего понимания. > Я попробовал эти шаги < /p>

Сканируя документ, используя gmsdocumentscanning < /li>
Попытка обнаружить заполненные круги, используя интенсивность пикселей Анализ < /li>
< /ol>
private void recognizeText(Bitmap bitmap) {
InputImage image = InputImage.fromBitmap(bitmap, 0);
TextRecognizer recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

recognizer.process(image)
.addOnSuccessListener(result -> {
for (Text.TextBlock block : result.getTextBlocks()) {
detectRadioButtons(block, bitmap);
}
})
.addOnFailureListener(e -> Log.e("Error", "Text recognition failed", e));
}

< /code>
private void detectRadioButtons(Text.TextBlock textBlock, Bitmap bitmap) {
for (Text.Line line : textBlock.getLines()) {
Rect boundingBox = line.getBoundingBox();
if (isRadioButtonChecked(boundingBox, bitmap)) {
Log.i("Detection", "Checked Radio Button: " + line.getText());
}
}
}

< /code>
private boolean isRadioButtonChecked(Rect rect, Bitmap bitmap) {
int checkedPixelThreshold = 100;
int checkedPixels = 0;
int totalPixels = rect.width() * rect.height();

for (int x = rect.left; x < rect.right; x++) {
for (int y = rect.top; y < rect.bottom; y++) {
int pixel = bitmap.getPixel(x, y);
if (Color.red(pixel) < checkedPixelThreshold &&
Color.green(pixel) < checkedPixelThreshold &&
Color.blue(pixel) < checkedPixelThreshold) {
checkedPixels++;
}
}
}
return checkedPixels > (totalPixels * 0.5); // More than 50% of pixels are filled
}

< /code>
The expected outcome is
Detect the circles on the scanned paper
Identify which circle is filled
Associate the filled circle with the correct text label or icons

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

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

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

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

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

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

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