使用zxing检测QR码

3

我正在研究二维码检测。我的需求是当用户向相机展示他/她的二维码时,程序必须检测并在二维码周围绘制一个框。我正在使用zxing库和C#语言。我搜索了很多内容,但是我找不到任何相关样例。请帮忙解决这个问题。


请参见https://dev59.com/82sy5IYBdhLWcg3wxAqO。 - rekire
如果我理解正确的话,您首先想要检测到QR码在视野范围内,然后(由某些用户操作触发)读取其中的内容是吗? - Gert Arnold
是的,GertArnold,那就是我想要的。 - user1081305
@user1081305:使用zxing应该可以检测到QR码的存在,因为这是它内部所做的。我从未尝试过。请查看源代码是否有任何可用的公共方法。 - Gert Arnold
我看到Zxing里有一个名为detector的单独类可用。但是他们将bitmatrix作为detector的输入,而我无法在C#中将位图图像转换为bitmatrix。(我认为它在Java中可用,但我不确定)。如果您知道如何,请告诉我。 - user1081305
1个回答

2
您可以使用检测器类来实现此功能。检测器构造函数以BitMatrix对象作为其唯一参数,该对象可以从BinaryBitmap对象的BlackMatrix属性中获取...
public string Detect(Bitmap bitmap)
    {
        try
        {
            com.google.zxing.LuminanceSource source = new RGBLuminanceSource(bitmap, bitmap.Width, bitmap.Height);
            var binarizer = new HybridBinarizer(source);
            var binBitmap = new BinaryBitmap(binarizer);
            BitMatrix bm = binBitmap.BlackMatrix;
            Detector detector = new Detector(bm);
            DetectorResult result = detector.detect();

            string retStr = "Found at points ";
            foreach (ResultPoint point in result.Points)
            {
                retStr += point.ToString() + ", ";
            }

            return retStr;
        }
        catch
        {
            return "Failed to detect QR code.";
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接