英文:
Cannot find local variable 'OpenCVLoader' in java Android Studio
问题
我开发了一个能够识别数学表达式的移动应用程序。我正在使用 OpenCV 和 tess-two 库。但是我遇到了一个错误,错误消息是“无法找到本地变量'OpenCVLoader'”。为什么会出现这个错误?我该如何修复它?能否请你帮助我。这对于我的毕业项目很重要。
static {
if (!OpenCVLoader.initDebug()) {
Log.w(TAG, "无法加载 OpenCV");
} else {
info("OpenCV 已加载");
}
// 用于 OCR
System.loadLibrary("gnustl_shared");
System.loadLibrary("nonfree");
}
public String getOCRResult(Bitmap bitmap, AssetManager assetMana) {
mTess = new TessBaseAPI();
String datapath = Environment.getExternalStorageDirectory() + "/RecognizeTextOCR/";
File dir = new File(datapath + "tessdata/");
if (dir.exists()) {
//dir.mkdirs();
try {
InputStream inStream = assetMana.open("CSDL/eng.traineddata");
FileOutputStream outStream = new FileOutputStream(datapath + "tessdata/eng.traineddata");
byte[] buffer = new byte[1024];
int readCount = 0;
while ((readCount = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, readCount);
}
outStream.flush();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
mTess.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1234567890',.?;/ ");
mTess.setDebug(true);
mTess.init(datapath, "eng"); // English
mTess.setImage(toGrayscale(bitmap));
String result = mTess.getUTF8Text();
return result;
}
public Bitmap toGrayscale(Bitmap bmpOriginal)
{
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}
英文:
I develop mobile app that recognize math expressions. I am using opencv and tess-two library. But i take error is that Cannot find local variable 'OpenCVLoader'. Why am I getting this error. How can i fix it.Can you help me please. This is important for graduation project.
static {
if (!OpenCVLoader.initDebug()) {
Log.w(TAG, "Unable to load OpenCV");
} else {
info("OpenCV loaded");
}
// For OCR
System.loadLibrary("gnustl_shared");
System.loadLibrary("nonfree");
}
public String getOCRResult(Bitmap bitmap, AssetManager assetMana) {
mTess = new TessBaseAPI();
String datapath = Environment.getExternalStorageDirectory() + "/RecognizeTextOCR/";
File dir = new File(datapath + "tessdata/");
if (dir.exists()) {
//dir.mkdirs();
try {
InputStream inStream = assetMana.open("CSDL/eng.traineddata");
FileOutputStream outStream = new FileOutputStream(datapath + "tessdata/eng.traineddata");
byte[] buffer = new byte[1024];
int readCount = 0;
while ((readCount = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, readCount);
}
outStream.flush();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
mTess.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST,"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1234567890',.?;/ ");
mTess.setDebug(true);
mTess.init(datapath, "eng"); // English
mTess.setImage(toGrayscale(bitmap));
String result = mTess.getUTF8Text();
return result;
}
public Bitmap toGrayscale(Bitmap bmpOriginal)
{
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}
专注分享java语言的经验与见解,让所有开发者获益!
评论