Работа с QR кодами
Работа с QR кодами
Предварительно установить Nuget-пакет QRCoder, Emgu
Код:
using Emgu.CV;
using Emgu.CV.Face;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.Util;
using System.IO;
using QRCoder;
using QRCodeEncoderLibrary;
Код:
public abstract class QRCode
{
public QRCode()
{
}
public Mat DetectQRCode(Image<Gray, byte> img)
{
Mat ret = new Mat();
QRCodeDetector detector = new QRCodeDetector();
if (detector.Detect(img.Mat, ret))
return ret;
return null;
}
public (Image<Gray, byte>, string) DercyptQRCode(Image<Gray, byte> img)
{
Mat ret = new Mat();
Mat ret2 = new Mat();
QRCodeDetector detector = new QRCodeDetector();
if (!detector.Detect(img.Mat, ret))
return (null, "Не найдено");
string x = detector.Decode(img.Mat, ret, ret2);
if (x == "")
return (null, "Не найдено");
return (ret2.ToImage<Gray, byte>(), x);
}
public Image GenerateQRCode(string src)
{
QREncoder enc = new QREncoder();
enc.Encode(src);
return (Image)enc.CreateQRCodeBitmap();
}
/// <summary>
///
/// </summary>
/// <param name="src"></param>
/// <returns></returns>
public static Image MatToImage(Mat src)
{
return (Image)Emgu.CV.BitmapExtension.ToBitmap(src);
}
}
|