将ZXing与网络摄像头源一起使用,尝试读取各种条形码/ QR码。只有一个问题,它拒绝阅读它们。它会读取我躺在一个条形码,我认为类型128,但当我试图让它读取其他任何东西时,没有任何反应。
这是我现在用于设置读取各种类型的提示的代码:
reader = new MultiFormatReader();
hints = new Hashtable();
fmts = new ArrayList();
fmts.Add(BarcodeFormat.DATAMATRIX);
fmts.Add(BarcodeFormat.QR_CODE);
fmts.Add(BarcodeFormat.PDF417);
fmts.Add(BarcodeFormat.UPC_E);
fmts.Add(BarcodeFormat.UPC_A);
fmts.Add(BarcodeFormat.CODE_128);
fmts.Add(BarcodeFormat.CODE_39);
fmts.Add(BarcodeFormat.ITF);
fmts.Add(BarcodeFormat.EAN_8);
fmts.Add(BarcodeFormat.EAN_13);
hints.Add(DecodeHintType.TRY_HARDER, true);
hints.Add(DecodeHintType.POSSIBLE_FORMATS, fmts);
reader.Hints = hints;
(基于:http://osdir.com/ml/zxing/2010-02/msg00043.html)
实际的解码代码看起来像这样......
RGBLuminanceSource lumi = new RGBLuminanceSource((Bitmap)image, width, height);
Result result = reader.decode(new BinaryBitmap(new HybridBinarizer(lumi)), hints);
readData = result.Text;
我做傻事吗?有没有其他人在C#下与ZXing取得成功?
所有人都非常感谢。
干杯。
P.S。在Win7 32b上使用VS2008下的ZXing 1.7。
答案 0 :(得分:0)
尝试使用GlobalHistogramBinarizer,HybridBinarizer似乎不起作用..
QRCodeReader reader = new QRCodeReader();
Bitmap bmp = new Bitmap(@"2.bmp");
LuminanceSource s = new RGBLuminanceSource(bmp, bmp.Width, bmp.Height);
BinaryBitmap bb = new BinaryBitmap(new GlobalHistogramBinarizer(s));
Hashtable hints = new Hashtable();
Result result = reader.decode(bb);
MessageBox.Show(result.Text);