我尝试了各种QR 码 库和网络摄像头捕获 技术。在特定时间间隔内拍摄照片,然后将其发送到QR 码 库似乎是个好主意,但检测到QR 码 的成功率极低。谁能推荐一种通过网络摄像头检测QR 码 的更好方法?非常感谢:)
代码:
void FinalVideo_NewFrame(对象发送者,NewFrameEventArgs eventArgs) {
Bitmap video = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = video;
try
{
com.google.zxing.qrcode.decoder.Decoder objDecoder = new com.google.zxing.qrcode.decoder.Decoder();
Bitmap bitmap = new Bitmap(pictureBox1.Image);
com.google.zxing.LuminanceSource source = new RGBLuminanceSource(bitmap, bitmap.Width,bitmap.Height);
var binarizer = new HybridBinarizer(source);
var binBitmap = new BinaryBitmap(binarizer);
QRCodeReader qrCodeReader = new QRCodeReader();
string str = new MultiFormatReader().decode(binBitmap).Text;
MessageBox.Show(str);
}
catch
{
}
我还使用了 messaging.toolkit.qrcode.dll。 代码如下:
private void mainWinForm_Load(object sender, EventArgs e)
{
webcam = new WebCam();
webcam.InitializeWebCam(ref imgVideo);
QRCodeDecoder decoder = new QRCodeDecoder();
try
{
MessageBox.Show(decoder.decode(new QRCodeBitmapImage(imgCapture.Image as Bitmap)));
}
catch
{
//Do nothing
}
}
最佳答案
尝试使用 AForge.NET 库从您的网络摄像头捕获视频,然后使用 ZXing.Net 库读取二维码。
您可以遵循一些像这样的 Youtube 教程,这些教程将展示如何使用 AForge.Net 从网络摄像头获取视频。 https://www.youtube.com/watch?v=osAOpsRYqVs&t=311s
至于 QR 解码,我使用了以下代码,我每 1 秒执行一次:
`
private void decode_QRtag()
{
try
{
//pictureBox1 shows the web cam video
Bitmap bitmap = new Bitmap(pictureBox1.Image);
BarcodeReader reader = new BarcodeReader { AutoRotate = true, TryHarder = true };
Result result = reader.Decode(bitmap);
string decoded = result.ToString().Trim();
//capture a snapshot if there is a match
PictureBox2.Image = bitmap;
textBox1.Text = decoded;
}
catch
{
}
}`
关于c# - QR码网络摄像头扫描仪c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424360/