Altbilgi içeriğine atla
IRONBARCODE KULLANARAK

C# ile Webcam Kullanarak Bir Çizgikodu Tarayıcı Oluşturmak

C# ile kamera kullanarak bir barkod tarayici, herhangi bir bagli kamerayi guclu bir barkod okuyucuya cevirerek fiziksel barkod tarayicilara olan ihtiyaçi ortadan kaldirir. Bu makalede, canli video karelerini yakalayan ve her biriyle sadece birkac satir kodla barkodlari ve QR kodlarina gerçek zamanli olarak ceviren, konsol tabanli bir web kamera barkod tarayicisi insa ederken size rehberlik edecegiz.

Ister envanter sistemi prototiplemis olun, ister bir check-in kiosku insa ediyor olun ya da sadece barkod taramanin nasıl calistigini merak ediyor olun, bu kılavuz aninda çalıştırabileceğiniz çalışma kaynağı kodu sağlar.

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

Bir Web kamerası Özel Bir Barkod Tarayıcısını Değiştirebilir mi?

Kesinlikle. Bir Windows, macOS veya Linux makinesine bağlı herhangi bir standart web kamerası veya USB video yakalama cihazı, doğru yazılım ile eşlendirildiğinde bir barkod tarayıcı olarak işlev görebilir. Süreç kamera karelerini yakalayarak, her kareyi bitmap görüntüsüne dönüştürerek ve ardından o görüntüyü çözmek için bir barkod okuyucu kütüphanesine aktararak çalışır.

Dynamsoft Barkod Okuyucu SDK veya DirectShow.NET gibi araçlar içeren geleneksel barkod tarama kurulumları genellikle bir filtre grafiği manuel olarak oluşturmanızı, yakalama grafiği ayarlamanızı ve yalnızca kareleri kameradan çıkarmak için bir kare geri arama hattı bağlamanızı gerektirir. IronBarcode, bunu dramatik bir şekilde basitlestirir, karmaşık video akışı altyapısı kurmaya gerek yoktur. Görüntü verilerini temin eder, ve BarcodeReader sınıfı geri kalanı halleder, herkese açık bir okuma yöntemi ile barkodlarla QR kodları arasında her şeyi destekler.

Kamerayı Ayarlama ve Bağımlılıkları Kurma

Bir web kamerasından bir .NET konsol uygulamasına video kareleri almak için bir kamera erişim kütüphanesini gerektirir. OpenCvSharp4, bunu basit hale getiren hafif bir çapraz platform .NET kütüphanesidir. IronBarcode ile birleştirildiğinde, düşük seviyeli video yakalama cihazı enumarasyonu veya kare hızı ayarlarıyla incelemeyi veya uğraşmadan gerçek zamanlı bir barkod tarayıcısı oluşturmanız için gerekli her şeyi sağlar.

Her iki paketi NuGet üzerinden yükleyin:

dotnet add package OpenCvSharp4.Windows
dotnet add package OpenCvSharp4.Extensions
dotnet add package BarCode
dotnet add package OpenCvSharp4.Windows
dotnet add package OpenCvSharp4.Extensions
dotnet add package BarCode
```
dotnet add package OpenCvSharp4.Windows
dotnet add package OpenCvSharp4.Extensions
dotnet add package BarCode
```
$vbLabelText   $csharpLabel

Bu üç paket yüklendikten sonra, projeniz OpenCvSharp aracılığıyla kamera erişimi ve IronBarcode ile barkod çözümü kazanır. Ek sistem bağımlılığı veya dış SDK'lar yapılandırmaya gerek yok, sadece yükleyin ve başlayin.

Gerçek Zamanda Video Karelerini Yakalama ve Barkod Verilerini Okuma

Asagidaki kod ornegi, varsıyılan web kameranizi acan, surekli kareler yakalayan ve her birini barkodlar icin tarayan Visual Studio da konsol tabanli bir barkod tarayici oluşturur. Bir barkod algilandiginda, veri konsola yazilir ve kare bir anlik 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

Webcam kullanarak C#: Barkod Tarayıcı Oluşturma: Görüntü 1 - C# kullanarak webcam ile barkod tarayıcımızı kullanma

Bu kod, etkin bir görüntü bırakmak için üst seviye ifadeler kullanır. VideoCapture nesnesi, ilk bağlı kamera kaynağını açar ve kareleri bir döngü içinde çekmeye başlar. Her kare, bir OpenCvSharp Mat'ten bir Bitmap'e dönüştürülür ve ardından IronBarcode'un BarcodeReader.Read metodunun kabul ettiği çapraz platform bir görüntü formatı olan AnyBitmap'e sarılır.

BarcodeReaderOptions nesnesi tarama davranisini kontrol eder. Okuma Hizızını OkumaHızı.Hızlı olarak ayarlamak, gerçek zamanlı video için hızlı yanıtlar gerektirdiğiniz durumlar icin optimize eder. BeklenenBarkodTürleri özelliği, Code 128 ve EAN-13'den Veri Matrisi ve QR kodlarına kadar her formatı algılayacağı anlamına gelen BarcodeEncoding.All olarak ayarlandirilmiştir. İdeal bir durum sadece bir belirli formati içeriyorsa, bunu daraltmak tarama performansini artiracak. Bu seçenekleri yapılandırmayla ilgili daha fazla bilgi için, BarcodeReaderOptions referansıni kontrol edin.

Foreach döngüsü, döndürülen koleksiyondaki her BarcodeResult üzerinde yinelenir. Değer ozelligi kodlanmis barkodu icermektedir, ise Barkod Turunu tanimlar. Yöntem, adresi birden fazla barkod okumak sorunu olduğunda daha ileri işlemi kolaylastırmak icin bir BarkodSonuc koleksiyonu dondurur.

Farklı Kullanım Durumlari İçin Barkod Okuyucuyu Nasıl Ayarlayabilirsiniz?

Gerçek dünya barkod taraması genellikle mükemmel olmayan koşuları, kötü aydınlatmayı, eğik açıları veya zarar göüçler etiketleri içerir. IronBarcode'un okuyucu seçenekleri, çalıştığınızı şeye bağlı olarak hız ve doğruluslarini dengeler.

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 Çıktısı: QR Kod ile Örnek

Webcam kullanarak C#: Barkod Tarayıcı Oluşturma: Görüntü 2 - Barkod tarayıcımız ile QR kod okuma

Hız Ayarini OkumaHızı.Detaylı olarak değiştirme, gürültülü veya eğik duran giriş verilerini işlemek için daha dikkatli bir görüntü analizi uygulamayı decoder'a bildirir. AutoRotate aktif etmek IronBarcode'ın, kullanıcilarin kamera önünde eşyaları değişik açılarda tutmasi ile sıklıkla karşılaşılan bir durumda görüntüde dönmüş barkodları otomatik olarak düzeltmesini saglar. Bu, IronBarcode'un bir QR kod genişletmesi ve barkod okuyucu olarak gerçekten öne çıktığı bir alandır: dahili görüntü ön işleme, bu zorlukları harici görüntü düzeltme filtrelerini ayarlamanızı gerektirmeksizin ele alır.

Ayni BarcodeReader API' yi kullanarak kaydedilmiş görüntü dosyalarından, PDF ler ve çok çerçeveli TIFF ler gibi barkodlari da tarayabilirsiniz, bu da onu web kamera kullanım durumları dışında da yetişebilir hale getiriyor. Eğer web tabanlı bir tarayıcı inşa ediyorsanız, IronBarcode Blazor entegrasyon elkitabı JavaScript interop kullanarak bir tarayıcı üzerinden web kamerası tarımasını kapsar.

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

Birçok web kamerası barkod tarayıcı öğreticileri genellikle ZXing.NET çözümünü AForge.NET veya DirectShow.NET ile kameraya erişim için birden fazla kitaplık kombinasyonuna dayanır. Bu yaklaşım video yakalama için bir filtre grafik kurulum gerektirir, video akışından kareleri çıkarmak bu da Windows API'leri üzerinden cihazların düşük seviyelerine erişmek içerir. Dynamsoft Barkod Okuyucu SDK, bu kameraya erişimi sağlamak için DirectShow.NET tesisatını gerektirerek benzer bir örüntüyü izler.

IronBarcode, bu karmaşıklığı keser. Barkod tarama mantığı tamamıyla BarcodeReader.Read içerinde ve bir Bitmap, bir bayt dizisini, bir dosya yolunu ya da Stream kabul eder. Bir çerçeve almak için bir geliştirme grafiği ya da EventArgs 'e olay gönderici ve e içinde bırakmamak, sadece ona görüntü vermek ve geri barkod bilgisi almak. Bu, daha az kod yazmak, daha az bagli olmak anlamına gelir ve gerçek uygulamanizdaki esas için daha fazla zaman.

.NET Core, .NET Framework, .NET 8+ boyunca kuran takımlar icin, IronBarcode, Windows, macOS, Linux, Docker, Azure ve AWS üzerinde tutarlı çapraz platform destegi sunar. Bu tam özellik setiini veya anlat, kod örneklerini daha fazla secenekle görmek için göz atın.

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

C# de bir web kamerayı barkod tarayıcıya dönüştürmek, doğru araçlarınız olduğunda minimal kod gerektirir. IronBarcode, çözümlemenin ağır işini üstlenirken, yazım barkodları ve QR kodları dahil, ve OpenCvSharp temiz bir şekilde kamera erişimini yönetir. Birlikte, yapılması kolay bir tarayici yaratarak, genişletilmesi kolay ve üretime hazır.

kendi projenizde denemek icin bir ücretsiz deneme başlatin ya da yayınlamaya hazır oldugunuzda lisanslama seçeneklerini araştırın.

Sıkça Sorulan Sorular

C# içinde bir web kamerası kullanarak barkod tarayıcı nasıl oluşturabilirim?

IronBarcode'dan yararlanarak C# içinde bir web kamerası kullanarak barkod tarayıcı oluşturabilirsiniz. Bu, webcam'den video çerçeveleri yakalama ve barkodlar ve QR kodlarında minimal kod satırları ile gerçek zamanlı çözme içermektedir.

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

Bir web kamerası kullanarak barkod tarama, özel donanım ihtiyaçını ortadan kaldırarak, bağlı herhangi bir kameranın güçlü bir barkod okuyucu olmasını sağlar. Bu, çeşitli uygulamalar için maliyet etkin ve çok yönlüdür.

C# içinde bir web kamerası kullanarak QR kodlarını çözmek mümkün mü?

Evet, IronBarcode ile C# içinde bir web kamerası kullanarak QR kodlarını çözebilirsiniz. Kütüphane, canlı video çerçevelerini yakalar ve sorunsuz bir şekilde QR kod verilerini işler.

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

Perakende, envanter yönetimi ve lojistik uygulamalar C# içindeki bir webcam barkod tarayıcıdan yararlanabilir. Bu, barkodlar ve QR kodları taramak için esnek ve maliyet etkin bir çözüm sunar.

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

Evet, IronBarcode gerçek zamanlı barkod çözümlemeyi destekliyor. Webcam'den canlı video çerçevelerini işler ve barkodları ve QR kodlarını anında çözer.

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

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

IronBarcode ile bir webcam kullanarak hangi tür barkodlar çözülebilir?

IronBarcode bir webcam kullanarak çeşitli türlerde barkodları çözebilir, bunların içinde QR kodları, UPC, EAN ve Code 128 bulunmaktadır.

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

Hayır, ileri düzey programlama becerilerine ihtiyaçınız yok. IronBarcode kullanarak barkod tarayıcı oluşturma işlemi sadece birkaç satır kod içerir ve tüm yetenek düzeylerindeki geliştiricilere uygundur.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

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