我必须扫描写在这样的东西上的数据矩阵。
代码是白色/浅灰色,但背景会反射不同的颜色,具体取决于相机的位置(角度)、光线。哪里是编辑在 Android Zxing 中捕获的图像的正确位置?
在处理之前是否有任何可能的调整以使图像在白底黑字?
任何想法都会很棒。
我必须扫描写在这样的东西上的数据矩阵。
代码是白色/浅灰色,但背景会反射不同的颜色,具体取决于相机的位置(角度)、光线。哪里是编辑在 Android Zxing 中捕获的图像的正确位置?
在处理之前是否有任何可能的调整以使图像在白底黑字?
任何想法都会很棒。
Bitmap bm = Bitmap.createBitmap(500, 500, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bm);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
int xo = (w-500)/2;
int yo = (h-500)/2;
c.drawBitmap(bmp, -xo, -yo, paint);
bmp.recycle();
也看看这个类:
http://zxing.org/w/docs/javadoc/com/google/zxing/common/HybridBinarizer.html
也许您默认使用的是GlobalHistogramBinarizer
,它更快,但对渐变效果不太好。
看来您需要在识别之前进行一些图像处理。先前的答案建议使用对背景强度变化敏感的直方图 bianrizer。众所周知,Sauvola 过滤器对背景变化(和梯度)具有良好的耐受性,但处理时间更长。(在我们的 OCR 项目中实现:http: //sourceforge.net/projects/javaocr/,您可以在此应用程序中看到它的实际效果:https ://market.android.com/details?id=de.pribluda.android .ocrcall&feature=search_result )