Altbilgi içeriğine atla
IRONBARCODE KULLANARAK

Webcam Kullanarak C#'ta Barkod Tarayıcı Oluşturun

C#'da bir web kamerası kullanarak barkod tarayıcı, herhangi bir bağlı kamerayı güçlü bir barkod okuyucuya dönüştürerek fiziksel barkod tarayıcılara olan ihtiyacı ortadan kaldırır. Bu makalede, canlı video karelerini yakalayan ve barkodlar ve QR kodlar gerçek zamanlı olarak çözen bir konsol tabanlı web kamerası barkod tarayıcıyı sadece birkaç satır kodla oluşturmak için size adım adım yol göstereceğiz.

Bir envanter sisteminin prototipini oluşturuyor, bir giriş kioskunu inşa ediyor veya barkod taramanın perde arkasında nasıl çalıştığına merak duyuyor olun, bu rehber, hemen çalıştırabileceğiniz çalışan kaynak kodunu sunar.

Şimdi IronBarcode ile başlayın.
green arrow pointer

Bir Webcam Özel Bir Barkod Tarayıcının Yerini Alabilir mi?

Kesinlikle. Doğru yazılımla eşleştirildiğinde, bir Windows, macOS veya Linux makinesine bağlı herhangi bir standart web kamerası veya USB video yakalama cihazı bir barkod tarayıcı olarak hizmet edebilir. Süreç, kameradan video karelerini yakalamak, her kareyi bir bitmap görüntüsüne dönüştürmek ve ardından bu görüntüyü kod çözme için bir barkod okuyucu kütüphanesine geçirmekle çalışır.

Dynamsoft Barcode Reader SDK veya DirectShow.NET gibi araçları içeren geleneksel barkod tarama düzeneklerinde, genellikle filtre grafiği manuel olarak yapılandırmanız, bir yakalama grafiği kurmanız ve kameradan kareleri çıkarmak için bir kare geri arama hattını bir araya getirmeniz gerekir. IronBarcode bu durumu dramatik bir şekilde basitleştirir, karmaşık video akışı altyapısı oluşturmanıza gerek yoktur. Görüntü verilerini sağlarsınız ve BarcodeReader sınıfı geri kalanını halleder, hepsi tek bir okuma yöntemi üzerinden standart barkodlardan QR kodlarına kadar her şeyi destekler.

Kamerayı Nasıl Kurmalı ve Bağımlılıkları Nasıl Yüklemelisiniz?

Bir web kamerasından .NET konsol uygulamasına video kareleri almak için bir kamera erişim kütüphanesine ihtiyacınız var. OpenCvSharp4, bu işlemi basit hale getiren OpenCV'nin hafif, çapraz platform bir .NET sarmalayıcısıdır. IronBarcode ile birleştirildiğinde, düşük seviyeli video yakalama cihazı numaralandırma veya kare hızı yapılandırması ile uğraşmadan gerçek zamanlı bir barkod tarayıcı oluşturmak için gereken her şeyi sağlar.

Her iki paketi de NuGet aracılığıyla yükleyin:

dotnet add package OpenCvSharp4.Windows, OpenCvSharp4.Extensions, BarCode

Bu üç paketi yükledikten sonra projeniz OpenCvSharp sayesinde kamera erişimi ve IronBarcode ile barkod kod çözme kazanır. Ek sistem bağımlılıkları veya yapılandırılacak harici SDK'lar yoktur, sadece yükle ve devam et.

Video Çerçevelerini Yakalama ve Gerçek Zamanlı Barkod Verilerini Okuma?

Aşağıdaki kod örneği, varsayılan web kameranızı açan, sürekli olarak kareleri yakalayan ve her birini barkodlar için tarayan Visual Studio'da konsol tabanlı bir barkod tarayıcı oluşturur. Bir barkod tespit edildiğinde, veri konsola yazılır ve kare bir anlık görüntü olarak kaydedilir.

using OpenCvSharp;
using OpenCvSharp.Extensions;
using IronBarCode;
using IronSoftware.Drawing;
// Open the default camera (device index 0)
using var capture = new VideoCapture(0);
if (!capture.IsOpened())
{
    Console.WriteLine("No camera found. Check connected devices.");
    return;
}
// Configure the barcode reader for real-time scanning
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.All,
    Speed = ReadingSpeed.Faster
};
Console.WriteLine("Barcode scanner active. Press 'Q' to quit.");
using var frame = new Mat();
bool scanning = true;
while (scanning)
{
    capture.Read(frame);
    if (frame.Empty())
        continue;
    // Convert the captured frame to a bitmap for barcode processing
    var bitmap = BitmapConverter.ToBitmap(frame);
    var anyBitmap = new AnyBitmap(bitmap);
    // Scan the frame for barcodes
    var results = BarcodeReader.Read(anyBitmap, options);
    foreach (var result in results)
    {
        Console.WriteLine($"Barcode detected: {result.Value}");
        Console.WriteLine($"  Format: {result.BarcodeType}");
        // Save a snapshot of the frame where the barcode was found
        bitmap.Save("barcode_snapshot.png");
        Console.WriteLine("  Snapshot saved to barcode_snapshot.png");
    }
    // Check for quit key
    if (Cv2.WaitKey(1) == 'q')
        scanning = false;
}
Console.WriteLine("Scanner stopped.");
using OpenCvSharp;
using OpenCvSharp.Extensions;
using IronBarCode;
using IronSoftware.Drawing;
// Open the default camera (device index 0)
using var capture = new VideoCapture(0);
if (!capture.IsOpened())
{
    Console.WriteLine("No camera found. Check connected devices.");
    return;
}
// Configure the barcode reader for real-time scanning
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.All,
    Speed = ReadingSpeed.Faster
};
Console.WriteLine("Barcode scanner active. Press 'Q' to quit.");
using var frame = new Mat();
bool scanning = true;
while (scanning)
{
    capture.Read(frame);
    if (frame.Empty())
        continue;
    // Convert the captured frame to a bitmap for barcode processing
    var bitmap = BitmapConverter.ToBitmap(frame);
    var anyBitmap = new AnyBitmap(bitmap);
    // Scan the frame for barcodes
    var results = BarcodeReader.Read(anyBitmap, options);
    foreach (var result in results)
    {
        Console.WriteLine($"Barcode detected: {result.Value}");
        Console.WriteLine($"  Format: {result.BarcodeType}");
        // Save a snapshot of the frame where the barcode was found
        bitmap.Save("barcode_snapshot.png");
        Console.WriteLine("  Snapshot saved to barcode_snapshot.png");
    }
    // Check for quit key
    if (Cv2.WaitKey(1) == 'q')
        scanning = false;
}
Console.WriteLine("Scanner stopped.");
Imports OpenCvSharp
Imports OpenCvSharp.Extensions
Imports IronBarCode
Imports IronSoftware.Drawing

' Open the default camera (device index 0)
Using capture As New VideoCapture(0)
    If Not capture.IsOpened() Then
        Console.WriteLine("No camera found. Check connected devices.")
        Return
    End If

    ' Configure the barcode reader for real-time scanning
    Dim options As New BarcodeReaderOptions With {
        .ExpectMultipleBarcodes = False,
        .ExpectBarcodeTypes = BarcodeEncoding.All,
        .Speed = ReadingSpeed.Faster
    }
    Console.WriteLine("Barcode scanner active. Press 'Q' to quit.")

    Using frame As New Mat()
        Dim scanning As Boolean = True
        While scanning
            capture.Read(frame)
            If frame.Empty() Then
                Continue While
            End If

            ' Convert the captured frame to a bitmap for barcode processing
            Dim bitmap = BitmapConverter.ToBitmap(frame)
            Dim anyBitmap As New AnyBitmap(bitmap)

            ' Scan the frame for barcodes
            Dim results = BarcodeReader.Read(anyBitmap, options)
            For Each result In results
                Console.WriteLine($"Barcode detected: {result.Value}")
                Console.WriteLine($"  Format: {result.BarcodeType}")

                ' Save a snapshot of the frame where the barcode was found
                bitmap.Save("barcode_snapshot.png")
                Console.WriteLine("  Snapshot saved to barcode_snapshot.png")
            Next

            ' Check for quit key
            If Cv2.WaitKey(1) = AscW("q"c) Then
                scanning = False
            End If
        End While
    End Using
End Using

Console.WriteLine("Scanner stopped.")
$vbLabelText   $csharpLabel

Using Webcam for Barcode Scanning in C

Bir Barkod Tarayıcı Oluşturmak C# ve Webcam Kullanarak: Görsel 1 - C# kullanarak webcam ile barkod tarayıcı kullanımımız

Bu kod, işleri temiz tutmak için üst düzey ifadeler kullanır. VideoCapture nesnesi ilk bağlı kamera kaynağını açar ve bir döngü içinde kareleri çekmeye başlar. Her kare OpenCvSharp Mat'tan Bitmap'e dönüştürülür ve ardından IronBarcode'un BarcodeReader.Read yönteminin kabul ettiği platformlar arası görüntü formatı olan AnyBitmap ile sarılır.

BarcodeReaderOptions nesnesi tarama davranışını kontrol eder. Hızı ReadingSpeed.Faster olarak ayarlamak, her kareye hızlı yanıtlar gerektiren gerçek zamanlı video için optimize eder. ExpectBarcodeTypes özelliği BarcodeEncoding.All olarak ayarlandığında, tarayıcı Code 128 ve EAN-13'den Data Matrix ve QR kodlara kadar tüm desteklenen formatları tespit eder. Kullanım senaryonuz yalnızca belirli bir format içermekteyse, bunu daraltmak tarama performansını artıracaktır. Bu seçeneklerin nasıl yapılandırılacağı hakkında daha fazla bilgi için BarcodeReaderOptions referansına bakın.

foreach döngüsü, döndürülen koleksiyondaki her BarcodeResult üzerinde yineleme yapar. Value özelliği, çözülen barkod verilerini içerirken, BarcodeType formatı tanımlar. Yöntem bir BarcodeResults koleksiyonu döndürür ve gerektiğinde birden fazla barkodu işlemek kolaydır.

Farklı Kullanım Senaryoları için Barkod Okuyucuyu Nasıl İnce Ayarlayabilirsiniz?

Gerçek dünya barkod taraması genellikle kusurlu koşulları, kötü aydınlatmayı, eğik açıları veya hasarlı etiketleri içerebilir. IronBarcode'un okuyucu seçenekleri, neyle çalıştığınıza bağlı olarak hızı doğruluk ile dengelemenizi sağlar.

using IronBarCode;
// Optimized options for scanning QR codes from a camera feed
var qrOptions = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.PDF417,
    Speed = ReadingSpeed.Detailed,
    AutoRotate = true
};
// Decode barcodes from a saved image captured by the webcam
var imageResults = BarcodeReader.Read("barcode_snapshot.png", qrOptions);
foreach (var barcode in imageResults)
{
    Console.WriteLine($"Data: {barcode.Value}");
    Console.WriteLine($"Type: {barcode.BarcodeType}");
    Console.WriteLine($"Page: {barcode.PageNumber}");
}
using IronBarCode;
// Optimized options for scanning QR codes from a camera feed
var qrOptions = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.PDF417,
    Speed = ReadingSpeed.Detailed,
    AutoRotate = true
};
// Decode barcodes from a saved image captured by the webcam
var imageResults = BarcodeReader.Read("barcode_snapshot.png", qrOptions);
foreach (var barcode in imageResults)
{
    Console.WriteLine($"Data: {barcode.Value}");
    Console.WriteLine($"Type: {barcode.BarcodeType}");
    Console.WriteLine($"Page: {barcode.PageNumber}");
}
Imports IronBarCode

' Optimized options for scanning QR codes from a camera feed
Dim qrOptions As New BarcodeReaderOptions With {
    .ExpectMultipleBarcodes = True,
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.PDF417,
    .Speed = ReadingSpeed.Detailed,
    .AutoRotate = True
}

' Decode barcodes from a saved image captured by the webcam
Dim imageResults = BarcodeReader.Read("barcode_snapshot.png", qrOptions)
For Each barcode In imageResults
    Console.WriteLine($"Data: {barcode.Value}")
    Console.WriteLine($"Type: {barcode.BarcodeType}")
    Console.WriteLine($"Page: {barcode.PageNumber}")
Next
$vbLabelText   $csharpLabel

Farklı Barkodları Okuma Çıkışı: QR Kod İle Örnek

Bir Barkod Tarayıcı Oluşturmak C# ve Webcam Kullanarak: Görsel 2 - Barkod tarayıcı ile QR kod okuma

Hızı ReadingSpeed.Detailed olarak değiştirmek, kod çözücüyü daha ayrıntılı görüntü analizini uygulamaya sebep olur, bu da gürültülü veya eğik giriş verilerini işlemekte idealdir. AutoRotate'yi etkinleştirmek, IronBarcode'un görüntüdeki döndürülmüş barkodları otomatik olarak düzeltmesini sağlar, bu da kullanıcıların öğeleri kameranın önünde garip açılarla tuttukları yaygın bir senaryodur. Bu, IronBarcode'un bir QR kod kütüphanesi ve barkod okuyucu olarak gerçekten öne çıktığı alanlardan biridir: geliştirici tarafından harici görüntü düzeltme filtreleri bağlamanızı gerektirmeden bu zorlukları kendi bünyesinde çözer.

Ayrıca, kaydedilmiş görüntü dosyalarından, PDF'lerden ve çok kareli TIFF'lerden aynı BarcodeReader API'si kullanılarak barkod taraması yapabilirsiniz. Bu durum onu webcam kullanım durumlarının ötesinde oldukça esnek kılar. Bir web tabanlı tarayıcı oluşturuyorsanız, IronBarcode Blazor entegrasyon kılavuzu tarayıcılar aracılığıyla JavaScript interop kullanarak tarama işlemini kapsar.

Bu Yaklaşımı Alternatiflerinden Daha Basit Kılan Nedir?

C# içinde birçok webcam barkod tarayıcı eğitimi, genellikle ZXing.NET kod çözme için, kameraya erişim için AForge.NET veya DirectShow.NET ile birleştirilerek çok kitaplıklı kombinasyonlara dayanır. Bu yaklaşım, video yakalama için bir filtre grafiği kurmayı, görüntü akışından kare çıkarmak için kare geri çağrıları manuel olarak yapılandırmayı ve cihaz numaralandırmayı düşük seviyeli Windows API'leri üzerinden yönetmeyi gerektirir. Dynamsoft Barcode Reader SDK benzer bir düzen takip eder, kamera erişimi için DirectShow.NET tesisatını gerektirir.

IronBarcode bu karmaşıklığı keser. Barkod tarama mantığı tamamen, bir Bitmap, bayt dizisi, dosya yolu veya Stream kabul eden BarcodeReader.Read içinde yer alır. Yakalama grafiği oluşturulmuyor, kare yakalama için nesne gönderici ve EventArgs e olay düzeneği oluşturulmuyor, sadece görüntü verilerini verin ve barkod bilgilerini geri alın. Bu, yazılacak daha az kod anlamına gelir, daha az bağımlılığın korunması ve uygulamanızda gerçekten önemli olan özelliklere daha fazla zaman harcanması anlamına gelir.

.NET Core, .NET Framework veya .NET 8+ üzerinde çalışan ekipler için, IronBarcode Windows, macOS, Linux, Docker, Azure ve AWS'de tutarlı çapraz platform desteği sağlayarak bu desteği genişletir. Tam özellik setini keşfedin veya başka ne yapılabilir görmek için ek kod örneklerini göz atın.

Kendi Barkod Tarayıcınızı Oluşturmaya Hazır mısınız?

C# ile bir web kamerasını barkod tarayıcıya döndürmek, doğru araçlar elinizde olduğunda en az kod kullanılarak gerçekleşir. IronBarcode, standart barkodlardan QR kodlara kadar kod çözmedeki ağır yükü hallederken, OpenCvSharp kamera erişimini temiz bir şekilde yönetir. Birlikte, inşa edilmesi kolay, genişletilmesi kolay ve üretime hazır bir tarayıcı oluştururlar.

Ücretsiz bir deneme başlatın ve kendi projenizle deneyin ya da dağıtıma hazır olduğunuzda lisans seçeneklerini keşfedin.

Sıkça Sorulan Sorular

C#'ta bir webcam kullanarak nasıl bir barkod tarayıcı oluşturabilirim?

C# ile bir web kamerası kullanarak IronBarcode sayesinde bir barkod tarayıcı oluşturabilirsiniz. Bu, web kamerasından video kareleri yakalamayı ve barkodları ile QR kodlarını gerçek zamanlı olarak çok az kod satırıyla kod çözmeyi içerir.

Bir web kamerası kullanarak barkod taramanın faydaları nelerdir?

Bir web kamerası kullanarak barkod taraması yapmak, özel donanım ihtiyacını ortadan kaldırır ve bağlı olan herhangi bir kameranın güçlü bir barkod okuyucu hâline gelmesini sağlar. Bu, maliyet açısından etkili ve çeşitli uygulamalar için çok yönlüdür.

C# ile bir web kamera kullanarak QR kodlarını çözmek mümkün mü?

Evet, IronBarcode ile C# kullanarak bir web kamerası aracılığıyla QR kodlarını çözebilirsiniz. Kütüphane, canlı video karelerini yakalar ve sorunsuz bir şekilde QR kodu verilerini çıkarmak için işler.

C# içinde bir webcam barkod tarayıcıdan hangi tür uygulamalar faydalanabilir?

Küçük ve perakende, envanter yönetimi ve lojistik uygulamaları, C# dilinde bir web kamerası barkod tarayıcıdan faydalanabilir. Bu, barkod ve QR kodlarını taramak için esnek ve maliyet etkin bir çözüm sunmaktadır.

IronBarcode gerçek zamanlı barkod çözümlemeyi destekliyor mu?

Evet, IronBarcode gerçek zamanlı barkod çözmeyi destekler. Web kameradan gelen canlı video karelerini işleyerek barkodları ve QR kodlarını anında çözer.

Bir webcam barkod tarayıcı oluşturmak için kaynak kodu mevcut mu?

Evet, C#'ta konsol tabanlı bir web kamerası barkod tarayıcı oluşturmak için gereken tam kaynak kodu sağlanmaktadır. Bu, geliştiricilerin çözümü verimli bir şekilde anlamalarına ve uygulamalarına yardımcı olur.

IronBarcode kullanarak bir web kamerası ile hangi tür barkodlar deşifre edilebilir?

IronBarcode, C# içinde bir web kamerası kullanarak, QR kodları, UPC, EAN ve Code 128 gibi çeşitli türlerdeki barkodları çözebilir.

IronBarcode kullanarak bir barkod tarayıcı oluşturmak için ileri düzey programlama becerilerine ihtiyacım var mı?

Hayır, IronBarcode kullanarak bir barkod tarayıcı oluşturmak için ileri düzey programlama becerilerine ihtiyacınız yok. Süreç, her beceri seviyesindeki geliştiriciler için erişilebilir hale getirerek, birkaç satır kod gerektirir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara