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.
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
```
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.")
Using Webcam for Barcode Scanning in C

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

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.




