如何使用Emgu.CV.QRCodeDetector.Detect和Emgu.CV.QRCodeDetector.Decode函数?

问题描述 投票:0回答:2

我在 Visual Studio 上使用 Emgu CV v4.6 和 C# 6.0。我需要使用 Emgu CV 扫描 QR 码,但我不知道如何使用函数 Emgu.CV.QRCodeDetector.DetectEmgu.CV.QRCodeDetector.Decode。在文档中,据说 Decode() 需要 Detect() 方法找到的四边形顶点,而 Detect() 只返回一个 bool (告诉是否检测到 QR 码),我们无法访问 QRCodeDetector 对象中的任何内容。

这是我当前的上下文代码:

Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(@"C:\Users\Dacapo\source\repos\qrcode_reading\qrcode_reading\qr.jpg");
IInputArray img1arr = img1;
Mat pos = new Mat(1, 2, Emgu.CV.CvEnum.DepthType.Cv32S, 1);

QRCodeDetector detector = new QRCodeDetector();
bool decoded = detector.Detect(img1arr, pos); //this returns true

这是 qr.jpg :

c# opencv qr-code emgucv
2个回答
1
投票

根据他们的文档:https://www.emgu.com/wiki/files/4.6.0/document/html/Methods_T_Emgu_CV_BarcodeDetector.htm现在有一个 DetectAndDecode() 方法可以接受两次重载。希望这可以帮助。我目前正在研究类似的实现,因此我将在这里报告任何进展。


0
投票

添加这些包:

 <PackageReference Include="Emgu.CV" Version="4.8.1.5350" />
 <PackageReference Include="Emgu.CV.runtime.windows" Version="4.8.1.5350" />

上传图片时:

using var image = new Image<Bgr, byte>(ImageUrl);

// Detect QR code
var qrCodeDetector = new QRCodeDetector();

Mat points = new Mat(1, 2, Emgu.CV.CvEnum.DepthType.Cv32S, 1);
var detected = qrCodeDetector.Detect(image, points);

 if (detected)
     {
     // Decode QR code
     var decodedText = qrCodeDetector.Decode(image, points);
     Console.WriteLine($"Decoded QR code: {decodedText}");
 }
© www.soinside.com 2019 - 2024. All rights reserved.