IRONSOFTWAREHOME
USANDO O IRONBARCODE

Crie um leitor de código de barras usando webcam em C#

Curtis Chau
Curtis Chau
Updated: 28 de junho de 2026

Um leitor de código de barras que utiliza webcam em C# elimina a necessidade de leitores de código de barras físicos, transformando qualquer câmera conectada em um poderoso leitor de código de barras. Neste artigo, vamos mostrar como criar um leitor de código de barras baseado em webcam para console, que captura quadros de vídeo ao vivo e decodifica códigos de barras e códigos QR em tempo real, tudo com apenas algumas linhas de código.

Seja para criar um protótipo de sistema de inventário, construir um quiosque de check-in ou simplesmente por curiosidade sobre como funciona a leitura de código de barras, este guia fornece um código-fonte funcional que você pode executar imediatamente.

Primeiro passo:
arrow pointer

Uma webcam pode substituir um leitor de código de barras dedicado?

Absolutamente. Qualquer webcam padrão ou dispositivo de captura de vídeo USB conectado a um computador Windows, macOS ou Linux pode funcionar como um leitor de código de barras quando combinado com o software correto. O processo funciona capturando quadros de vídeo da câmera, convertendo cada quadro em uma imagem bitmap e, em seguida, passando essa imagem para uma biblioteca de leitura de código de barras para decodificação.

As configurações tradicionais de leitura de código de barras que envolvem ferramentas como o SDK Dynamsoft Barcode Reader ou o DirectShow .NET geralmente exigem que você configure manualmente um gráfico de filtros, configure um gráfico de captura e conecte um pipeline de retorno de chamada de quadros apenas para obter quadros da câmera. O IronBarcode simplifica isso drasticamente, não há necessidade de construir uma infraestrutura complexa de transmissão de vídeo. Você fornece os dados da imagem e a classe BarcodeReader cuida do resto, suportando desde códigos de barras padrão até códigos QR a partir de um único método de leitura .

Como configurar a câmera e instalar as dependências?

Para obter quadros de vídeo de uma webcam e exibi-los em um aplicativo de console .NET , é necessário utilizar uma biblioteca de acesso à câmera. OpenCvSharp4 é um wrapper .NET leve e multiplataforma para OpenCV que simplifica bastante esse processo. Em conjunto com o IronBarcode, ele oferece tudo o que você precisa para criar um leitor de código de barras em tempo real sem se preocupar com a enumeração de dispositivos de captura de vídeo de baixo nível ou com a configuração da taxa de quadros.

Instale ambos os pacotes via NuGet:

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

Com esses três pacotes instalados, seu projeto obtém acesso à câmera através do OpenCvSharp e decodificação de código de barras através do IronBarcode. Sem dependências de sistema adicionais ou SDKs externos para configurar, basta instalar e usar.

Como Capturar Quadros de Vídeo e Ler Dados de Código de Barras em Tempo Real?

O exemplo de código a seguir cria um leitor de código de barras baseado em console no Visual Studio que abre sua webcam padrão, captura quadros continuamente e lê cada um deles em busca de códigos de barras. Quando um código de barras é detectado, os dados são gravados no console e o quadro é salvo como um instantâneo.

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#

Crie um Scanner de Código de Barras Usando Webcam em C#: Imagem 1 - Usando nosso scanner de código de barras usando webcam em C#

Este código utiliza instruções de nível superior para manter a organização. O objeto VideoCapture abre a primeira fonte de câmera conectada e começa a capturar frames em um loop. Cada frame é convertido de um OpenCvSharp Mat para um Bitmap e, em seguida, encapsulado em um AnyBitmap, o formato de imagem multiplataforma aceito pelo método BarcodeReader.Read do IronBarcode.

O objeto BarcodeReaderOptions controla o comportamento de leitura. A configuração de velocidade "ReadingSpeed.Faster" otimiza para vídeos em tempo real, onde você precisa de respostas rápidas a cada quadro. A propriedade ExpectBarcodeTypes está definida como BarcodeEncoding.All, o que significa que o leitor detectará todos os formatos suportados, desde Code 128 e EAN-13 até Data Matrix e códigos QR. Se o seu caso de uso envolver apenas um formato específico, restringir isso aumentará o desempenho da digitalização. Para obter mais informações sobre como configurar essas opções, consulte a referência BarcodeReaderOptions .

O loop foreach itera sobre cada BarcodeResult na coleção retornada. A propriedade Value contém os dados do código de barras decodificados, enquanto BarcodeType identifica o formato. O método retorna uma coleção BarcodeResults, facilitando o processamento de múltiplos códigos de barras, se necessário.

Como ajustar o leitor de código de barras para diferentes casos de uso?

A leitura de códigos de barras no mundo real geralmente envolve condições imperfeitas, iluminação inadequada, ângulos distorcidos ou etiquetas danificadas. As opções de leitura da IronBarcode permitem equilibrar velocidade e precisão, dependendo do que você estiver utilizando.

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

Saída para leitura de diferentes códigos de barras: Exemplo com código QR

Crie um Scanner de Código de Barras Usando Webcam em C#: Imagem 2 - Lendo o código QR com nosso scanner de código de barras

A opção "Switching Speed ​​to ReadingSpeed.Detailed" instrui o decodificador a aplicar uma análise de imagem mais completa, ideal para lidar com dados de entrada ruidosos ou distorcidos. Habilitar a Rotação Automática permite que o IronBarcode corrija automaticamente códigos de barras rotacionados na imagem, um cenário comum quando os usuários seguram os itens em ângulos estranhos em frente à câmera. Esta é uma das áreas em que o IronBarcode realmente se destaca como biblioteca de código QR e leitor de código de barras: seu pré-processamento de imagem integrado lida com esses desafios sem exigir que você conecte filtros externos de correção de imagem.

Você também pode ler códigos de barras de arquivos de imagem salvos , PDFs e TIFFs com vários quadros usando a mesma API BarcodeReader, tornando-a versátil muito além dos casos de uso com webcam. Se você estiver criando um scanner baseado na web, o guia de integração do IronBarcode Blazor aborda a leitura por webcam através de um navegador usando interoperabilidade com JavaScript .

O que torna essa abordagem mais simples do que as alternativas?

Muitos tutoriais de leitores de código de barras com webcam em C# dependem de combinações de várias bibliotecas, normalmente ZXing .NET para decodificação, juntamente com AForge .NET ou DirectShow .NET para acesso à câmera. Essa abordagem exige a configuração de um gráfico de filtros para captura de vídeo, a configuração manual de callbacks de quadros para extrair quadros do fluxo de vídeo e o tratamento da enumeração de dispositivos por meio de APIs de baixo nível do Windows. O SDK do leitor de código de barras da Dynamsoft segue um padrão semelhante, exigindo a implementação do DirectShow .NET para acessar a webcam.

O IronBarcode simplifica essa complexidade. A lógica de leitura de código de barras reside inteiramente em BarcodeReader.Read, que aceita um Bitmap, uma matriz de bytes, um caminho de arquivo ou um Stream. Não há necessidade de construir um gráfico de captura, nem de enviar objetos ou configurar eventos EventArgs para a captura de quadros; basta fornecer os dados da imagem e receber as informações do código de barras de volta. Isso significa menos código para escrever, menos dependências para manter e mais tempo dedicado aos recursos que realmente importam para sua aplicação.

Para equipes que desenvolvem em .NET Core, .NET Framework ou .NET 8+, o IronBarcode oferece suporte multiplataforma consistente em Windows, macOS, Linux, Docker, Azure e AWS. Explore o conjunto completo de funcionalidades ou navegue por exemplos de código adicionais para ver o que mais é possível.

Pronto para construir seu próprio leitor de código de barras?

Transformar uma webcam em um leitor de código de barras em C# requer um código mínimo quando você tem as ferramentas certas. O IronBarcode lida com a parte mais complexa da decodificação, desde códigos de barras padrão até códigos QR, enquanto o OpenCvSharp gerencia o acesso à câmera de forma eficiente. Juntos, eles criam um scanner fácil de construir, fácil de expandir e pronto para produção.

Inicie um teste gratuito para experimentar com seu próprio projeto ou explore as opções de licenciamento quando estiver pronto para implantar.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.