IRONSOFTWAREHOME
KORZYSTANIE Z IRONBARCODE

Zbuduj czytnik kodów kreskowych używając kamery internetowej w C#

Curtis Chau
Curtis Chau
Updated: 28 czerwca 2026

Skaner kodów kreskowych wykorzystujący kamerę internetową w C# eliminuje potrzebę fizycznych skanerów kodów kreskowych przekształcając każdą podłączoną kamerę w potężny czytnik kodów kreskowych. W tym artykule przeprowadzimy cię przez budowanie skanera kodów kreskowych opartego na konsoli korzystającego z kamery internetowej, który pobiera klatki wideo na żywo i dekoduje kody kreskowe oraz kody QR w czasie rzeczywistym, wszystko przy użyciu zaledwie kilku linii kodu.

Niezależnie od tego, czy piszesz prototyp systemu inwentaryzacji, budujesz kiosk do rejestracji, czy po prostu jesteś ciekawy, jak działa skanowanie kodów kreskowych od strony technicznej, ten przewodnik dostarcza działający kod źródłowy, który możesz natychmiast uruchomić.

Pierwszy krok:
arrow pointer

Czy kamera internetowa może zastąpić dedykowany skaner kodów kreskowych?

Zdecydowanie. Każda standardowa kamera internetowa lub urządzenie do przechwytywania wideo USB podłączone do komputera z systemem Windows, macOS lub Linux może służyć jako skaner kodów kreskowych, gdy zostanie sparowane z odpowiednim oprogramowaniem. Proces polega na przechwytywaniu klatek wideo z kamery, konwertowaniu każdej klatki na obraz bitmapowy, a następnie przekazywaniu tego obrazu do biblioteki do odczytu kodów kreskowych w celu dekodowania.

Tradycyjne ustawienia skanowania kodów kreskowych z wykorzystaniem narzędzi takich jak Dynamsoft Barcode Reader SDK lub DirectShow.NET często wymagają ręcznej konfiguracji grafu filtrów, ustanowienia grafu przechwytywania i połączenia strumienia powrotnego klatek tylko po to, aby uzyskać klatki z kamery. IronBarcode upraszcza to dramatycznie, nie ma potrzeby budowania skomplikowanej infrastruktury strumienia wideo. Dostarczasz dane obrazowe, a klasa BarcodeReader zajmuje się resztą, wspierając wszystko od standardowych kodów kreskowych po kody QR za pomocą jednej metody odczytu.

Jak skonfigurować kamerę i zainstalować zależności?

Pobieranie klatek wideo z kamery internetowej do aplikacji konsolowej .NET wymaga biblioteki dostępu do kamery. OpenCvSharp4 to lekka, wieloplatformowa nakładka .NET wokół OpenCV, która to upraszcza. W połączeniu z IronBarcode, dostarcza wszystko, co jest potrzebne do stworzenia skanera kodów kreskowych w czasie rzeczywistym, bez walki z enumeracją urządzeń przechwytywania wideo na niskim poziomie lub konfiguracją częstotliwości ramek.

Zainstaluj oba pakiety przez NuGet:

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

Z tymi trzema pakietami zainstalowanymi, twój projekt zyskuje dostęp do kamery przez OpenCvSharp i dekodowanie kodów kreskowych dzięki IronBarcode. Nie ma dodatkowych zależności systemowych ani zewnętrznych SDK do konfiguracji, po prostu zainstaluj i gotowe.

Jak przechwytywać klatki wideo i odczytywać dane z kodów kreskowych w czasie rzeczywistym?

Poniższy przykład kodu tworzy oparty na konsoli skaner kodów kreskowych w Visual Studio, który otwiera twoją domyślną kamerę internetową, ciągle przechwytuje klatki i skanuje każdą z nich pod kątem kodów kreskowych. Gdy kod kreskowy zostanie wykryty, dane są zapisane na konsolę, a klatka jest zapisywana jako migawka.

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 Webcam for Barcode Scanning in C#

Zbuduj skaner kodow kreskowych przy uzyciu kamery internetowej w C#: Obraz 1 - Korzystanie z naszego skanera kodow kreskowych przy uzyciu kamery internetowej w C#

Ten kod używa najwyższego poziomu instrukcji, aby utrzymać przejrzystość. Obiekt VideoCapture otwiera pierwsze podłączone źródło kamery i zaczyna pobierać ramki w pętli. Każda ramka jest konwertowana z OpenCvSharp Mat na Bitmapę, a następnie opakowywana w AnyBitmap, format obrazu kompatybilny z BarcodeReader.Read w bibliotekach IronBarcode.

Obiekt BarcodeReaderOptions kontroluje zachowanie skanowania. Ustawienie Speed na ReadingSpeed.Faster optymalizuje działanie w przypadku wideo w czasie rzeczywistym, gdzie potrzebne są szybkie odpowiedzi dla każdej ramki. Właściwość ExpectBarcodeTypes ustawiona jest na BarcodeEncoding.All, co oznacza, że skaner wykryje każdy obsługiwany format, od Code 128 i EAN-13 po Data Matrix i kody QR. Jeśli Twój przypadek użycia dotyczy tylko określonego formatu, zawężenie tego wyboru zwiększy wydajność skanowania. Aby dowiedzieć się więcej o konfigurowaniu tych opcji, sprawdź dokumentację BarcodeReaderOptions.

Pętla foreach iteruje przez każdy BarcodeResult w zwróconej kolekcji. Właściwość Value zawiera zdekodowane dane z kodu kreskowego, podczas gdy BarcodeType identyfikuje format. Metoda zwraca kolekcję BarcodeResults, ułatwiając przetwarzanie wielu kodów kreskowych w razie potrzeby.

Jak dostosować czytnik kodów kreskowych do różnych przypadków użycia?

Skanowanie kodów kreskowych w rzeczywistych warunkach często obejmuje niedoskonałe warunki, słabe oświetlenie, przekrzywione kąty czy uszkodzone etykiety. Opcje czytnika IronBarcode pozwalają zbalansować szybkość z dokładnością w zależności od tego, z czym pracujesz.

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}");
}

Wyjście dla różnych kodów kreskowych: Przykład z kodem QR

Zbuduj skaner kodow kreskowych przy uzyciu kamery internetowej w C#: Obraz 2 - Odczytywanie kodu QR naszym skanerem kodow kreskowych

Przełączenie Speed na ReadingSpeed.Detailed informuje dekoder, aby zastosował bardziej szczegółową analizę obrazu, co idealnie nadaje się do obsługi szumów i przekrzywionych danych wejściowych. Włączenie AutoRotate pozwala IronBarcode automatycznie korygować obrócone kody kreskowe na obrazie, co jest częstym scenariuszem, gdy użytkownicy trzymają przedmioty pod dziwnymi kątami przed kamerą. To jest jedna z dziedzin, w których IronBarcode naprawdę się wyróżnia jako biblioteka kodów QR i czytnik kodów kreskowych: jego wbudowane przetwarzanie obrazu radzi sobie z tymi wyzwaniami bez konieczności podłączania zewnętrznych filtrów korygujących obraz.

Możesz również skanować kody kreskowe z zapisanych plików graficznych, PDF-ów i wieloramkowych TIFF-ów używając tego samego API BarcodeReader, co czyni go wszechstronnym znacznie poza przypadkami używania kamer internetowych. Jeśli budujesz zamiast tego skaner oparty na webie, przewodnik po integracji z IronBarcode dla Blazor obejmuje skanowanie kamerą internetową przez przeglądarkę, używając interop JavaScript.

Co sprawia, że to podejście jest prostsze niż inne?

Wiele samouczków dotyczących skanerów kodów kreskowych w C# polega na połączeniu wielu bibliotek, zazwyczaj ZXing.NET do dekodowania połączonego z AForge.NET lub DirectShow.NET do uzyskiwania dostępu do kamery. To podejście wymaga ustawienia grafu filtrów dla przechwytywania wideo, ręcznego konfigurowania wywołań ramek do ekstrakcji ramek ze strumienia wideo i obsługi enumeracji urządzeń za pomocą niskopoziomowych API Windows. SDK Dynamsoft Barcode Reader postępuje podobnie, wymagając instalacji DirectShow.NET do uzyskiwania dostępu do kamery internetowej.

IronBarcode omija tę złożoność. Logika skanowania kodów kreskowych znajduje się w BarcodeReader.Read, która przyjmuje Bitmapę, tablicę bajtów, ścieżkę do pliku lub Stream. Nie ma potrzeby budowania grafu przechwytywania, żadnych obiektów typu sender i EventArgs e do wywołań ramek, po prostu przekazujesz dane obrazu i otrzymujesz informacje o kodzie kreskowym z powrotem. To oznacza mniej kodu do napisania, mniej zależności do utrzymania i więcej czasu na funkcje, które naprawdę mają znaczenie w Twojej aplikacji.

Dla zespołów budujących na .NET Core, .NET Framework czy .NET 8+, IronBarcode zapewnia spójne wsparcie międzyplatformowe na Windows, macOS, Linux, Docker, Azure i AWS. Odkryj pełny zestaw funkcji lub przeszukaj dodatkowe przykłady kodu, aby zobaczyć, co jeszcze jest możliwe.

Gotowy do zbudowania własnego skanera kodów kreskowych?

Zmiana kamery internetowej w skaner kodów kreskowych w C# wymaga minimalnej ilości kodu, gdy masz odpowiednie narzędzia. IronBarcode zajmuje się ciężką pracą związaną z dekodowaniem, od standardowych kodów kreskowych po kody QR, podczas gdy OpenCvSharp czysto zarządza dostępem do kamery. Razem tworzą skaner, który jest łatwy do zbudowania, łatwy do rozszerzenia i gotowy do produkcji.

Rozpocznij darmowy okres próbny, aby wypróbować go w swoim własnym projekcie, lub zbadaj opcje licencjonowania, gdy będziesz gotowy do wdrożenia.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta