sample code to detect QRCode in an image

匿名 (未验证) 提交于 2019-12-03 02:16:02

问题:

I use this code in C# to decode (not detect) a QRCode and it works:

LuminanceSource ls = new RGBLuminanceSource(image, image.Width, image.Height); Result result = new QRCodeReader().decode(new BinaryBitmap(new HybridBinarizer(ls))); 

Now I would like to detect a QRCode in a more complex image with a lot of other stuffs such images and text. I'm not able to understand how to accomplish this because I cannot find any sample and transforming Bitmap (C#) to Bitmatrix for Detector (zxing) is not so direct.

Does anyone have a piece of code to give me?

thanks a lot


UPDATE


I try this code but I get a ReaderException:

The code:

LuminanceSource ls = new RGBLuminanceSource(bitmap, bitmap.Width, bitmap.Height);             QRCodeMultiReader multiReader = new QRCodeMultiReader(); Result[] rs = multiReader.decodeMultiple(new BinaryBitmap(new HybridBinarizer(ls)), hints);  return rs[0].Text; 

The exception

com.google.zxing.ReaderException:  in com.google.zxing.qrcode.detector.FinderPatternFinder.selectBestPatterns()    in com.google.zxing.qrcode.detector.FinderPatternFinder.find(Hashtable hints)    in com.google.zxing.qrcode.detector.Detector.detect(Hashtable hints)    in com.google.zxing.qrcode.QRCodeReader.decode(BinaryBitmap image, Hashtable hints)    in com.google.zxing.qrcode.QRCodeReader.decode(BinaryBitmap image)    in ...Logic.BarCodeManager.QRCodeReader(Bitmap bitmap) in  

UPDATE 02/12/2011


I have just tried to scan the printed QRCode (with the piece of code on the top of the post) with an App on my iPhone and it works well! So the problem is surely in the detection/decode phase.

回答1:

QR Codes always have the three squares in the top left, top right, bottom left corners. Knowing this you should be able to search for that square pattern within the pixel data of the image you are parsing, to figure out the top left, width and height of the qr code with a bit of simple logic parsing.



回答2:

Though it's old. I still want to post it in case someone needs it. The noise of images makes them difficult for zxing to detect qrcodes. The results are much better if the images are noise free. I use a simple method to reduce noise of scanned images. It can be done by shrinking the image. The shrink factor may vary by the noise of images. I found the factor 3 works fine in my case.



回答3:

        private string Qrreader(Bitmap x) {     BarcodeReader reader = new BarcodeReader { AutoRotate = true, TryHarder = true };     Result result = reader.Decode(x);     string decoded = result.ToString().Trim();     return decoded; } 

works for me! TryHarder makes it search in the whole picture



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!