2

我必须扫描写在这样的东西上的数据矩阵

代码是白色/浅灰色,但背景会反射不同的颜色,具体取决于相机的位置(角度)、光线。哪里是编辑在 Android Zxing 中捕获的图像的正确位置?

在处理之前是否有任何可能的调整以使图像在白底黑字?

任何想法都会很棒。

4

3 回答 3

2
            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();
于 2011-07-11T12:18:59.223 回答
2

也看看这个类:

http://zxing.org/w/docs/javadoc/com/google/zxing/common/HybridBinarizer.html

也许您默认使用的是GlobalHistogramBinarizer,它更快,但对渐变效果不太好。

于 2011-07-11T12:49:47.290 回答
0

看来您需要在识别之前进行一些图像处理。先前的答案建议使用对背景强度变化敏感的直方图 bianrizer。众所周知,Sauvola 过滤器对背景变化(和梯度)具有良好的耐受性,但处理时间更长。(在我们的 OCR 项目中实现:http: //sourceforge.net/projects/javaocr/,您可以在此应用程序中看到它的实际效果:https ://market.android.com/details?id=de.pribluda.android .ocrcall&feature=search_result )

于 2011-07-11T12:55:25.607 回答