exemple de code pour détecter QRCode dans une image

j'utilise ce code en C# pour décoder (Non détecter) un QRCode et il fonctionne:

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

maintenant je voudrais détecter un QRCode dans une image plus complexe avec beaucoup d'autres objets tels que des images et du texte. Je ne suis pas capable de comprendre comment accomplir ceci parce que je ne peux pas trouver d'échantillon et transformer Bitmap (C#) en Bitmatrix pour détecteur (zxing) n'est pas si direct.

quelqu'un a-t-il un morceau de code à me donner?

merci beaucoup


UPDATE


j'ai essayer ce code mais j'ai un ReaderException:

le 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;

l'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 

mettre à JOUR le 02/12/2011


je viens d'essayer de scanner le QRCode imprimé (avec le morceau de code sur le dessus du poteau) avec une application sur mon iPhone et cela fonctionne bien! Donc le problème est sûrement dans la phase de détection/décodage.

22
demandé sur user990423 2011-12-01 14:13:05

3 réponses

les Codes QR ont toujours les trois carrés en haut à gauche, en haut à droite, en bas à gauche. Sachant cela, vous devriez être en mesure de rechercher ce motif carré dans les données pixel de l'image que vous parsing, pour comprendre le haut à gauche, la largeur et la hauteur du code qr avec un peu de logique simple parsing.

1
répondu willthiswork89 2011-12-01 16:39:31

Si elle est ancienne. Je veux toujours le poster au cas où quelqu'un en aurait besoin. Le bruit des images rend difficile la détection des qrcodes par zxing. Les résultats sont bien meilleurs si les images sont sans bruit. J'utilise une méthode simple pour réduire le bruit des images numérisées. On peut le faire en rétrécissant l'image. Le facteur de rétrécissement peut varier en fonction du bruit des images. J'ai trouvé que le facteur 3 fonctionne bien dans mon cas.

1
répondu Tochi 2016-12-03 00:31:39
        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;
}

fonctionne pour moi! TryHarder le fait chercher dans toute l'image

0
répondu 2016-06-20 17:45:45