Я обрабатываю изображение, чтобы сделать его Tesseract-OCR дружественным с использованием платформы Catalano. Thresholding работает нормально, но когда я пытаюсь UnsharpMasking или изменение размера, я получаю сообщение об ошибке Не удалось исправить ориентацию: java.lang.IllegalStateException: Не удается вызвать setPixels() на переработанном растровом изображении, даже если я установил опции BitmapFactory, которые можно изменить в true & minsdk = 11.Android: Обработка изображений с использованием Catalano.Framework.1.4
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
options.inMutable = true;
Bitmap bitmap = BitmapFactory.decodeFile(ImagePath, options);
Bitmap bitmap = BitmapFactory.decodeFile(ImagePath, options);
FastBitmap fb = new FastBitmap(bitmap);
Grayscale grayScale = new Grayscale();
grayScale.applyInPlace(fb);
switch (thresholdFilterName) {
case "Threshold": Threshold t = new Threshold(100);
t.applyInPlace(fb);
break;
case "BradleyLocalThreshold": BradleyLocalThreshold blt = new BradleyLocalThreshold();
blt.applyInPlace(fb);
break;
case "SauvolaThreshold": SauvolaThreshold st =new SauvolaThreshold();
st.applyInPlace(fb);
break;
case "NiblackThreshold": NiblackThreshold nt =new NiblackThreshold();
nt.applyInPlace(fb);
break;
case "WolfJoulionThreshold": WolfJoulionThreshold wjt =new WolfJoulionThreshold();
wjt.applyInPlace(fb);
break;
default: WolfJoulionThreshold wjtD =new WolfJoulionThreshold();
wjtD.applyInPlace(fb);
break;
}
UnsharpMasking um= new UnsharpMasking();
um.applyInPlace(fb);
// exception is thrown here.
Sharpen s = new Sharpen();
s.applyInPlace(fb);
/*int newWidth=1191;
int newHeight=2000;
Resize rb = new Resize(newWidth, newHeight);
// and exception is thrown here also if i comment the above unsharpmasking.
// ResizeBicubic rb =new ResizeBicubic(newWidth, newHeight);
// ResizeBilinear rb = new ResizeBilinear(newWidth, newHeight);
// ResizeNearestNeighbor rb = new ResizeNearestNeighbor(newWidth, newHeight);
rb.applyInPlace(fb);*/
bitmap = fb.toBitmap();
processedImage.setImageBitmap(bitmap);
Я прочитал для предварительной обработки изображений для OCR ImageMagick также довольно хорошо, но я не нашел ничего конкретного о том, как использовать его с целью распознавания текста в Android все, что я получил это инструмент командной строки. Также я дал https://github.com/paulasiimwe/Android-ImageMagick, но это также не помогло много
BradleyLocalThreshold дает лучший результат в условиях освещения, где есть тень на изображении, но точность двигателя OCR беден с ним, где, как точность с HysteresisThreshold очень высока, но в условиях освещения она не работает. Есть ли какой-либо способ, который у нас есть лучший из обоих алгоритмов. – Sunny
У меня нет ответа, но я бы посоветовал вам опубликовать это как новый вопрос StackOverflow вместе с некоторыми образцами. – rmtheis