3

我在 .NET 上使用 zxing 取得了巨大成功,并试图获得解码 QR 条形码的最佳速度(我有很多工作要做——1.8M)。我正在使用的代码(它的好位):

// Create Barcode decoder
BarcodeReader q = new BarcodeReader();
q.PossibleFormats = new List<BarcodeFormat>();
q.PossibleFormats.Add(BarcodeFormat.QR_CODE);
q.AutoRotate = true; // Not necessary for QR?
q.TryHarder = false;

// Decode result
Result[] r = q.DecodeMultiple(imageFile);

我的代码更聪明一点,因为它处于循环中,如果第一次没有找到它,它会更加努力。

有没有办法添加一个区域、ROI 或更小的区域来加快检测速度?

还有其他提高性能的建议吗?

4

1 回答 1

5

ZXing.Net 用于二维码的最快方法如下:

// Create Barcode decoder
BarcodeReader q = new BarcodeReader();
q.PossibleFormats = new List<BarcodeFormat>();
q.PossibleFormats.Add(BarcodeFormat.QR_CODE);
q.AutoRotate = false;
q.TryHarder = false;

// Decode result
Result r = q.Decode(imageFile);

但它只解码找到的第一个二维码。如果不需要,请避免使用 DecodeMultiple。只有在真正需要时才应使用所有其他选项。二维码解码不需要 AutoRotate。

如果您的图像真的很大,请在解码前缩小它们。在大多数情况下,不需要分辨率大于 1000 像素的图像。唯一的例外是非常小的二维码。

另一个很好的优化是使用提供灰度图像的图像源。从 RGB 图像计算亮度值需要大量 CPU 周期。最快的选项是 8 位灰度图像。

于 2013-08-02T21:18:53.900 回答