IRONBARCODEの使用

VB .NETでカメラからバーコードを読み取る方法

ジョルディ・バルディア
ジョルディ・バルディア
2024年3月6日
共有:

急速に進化する技術の分野において、バーコードスキャナーデバイスは、小売業や物流から医療や製造業まで、さまざまな業界に欠かせない存在となっています。 Microsoft の Visual Basic .NET は、多機能で強力なプログラミング言語であり、カメラフィードから直接バーコードを読み取ることができるアプリケーションを作成するための堅牢なフレームワークを開発者に提供します。 この記事は、Iron SoftwareIronBarcode ライブラリを使用してVisual Basicでカメラを使った包括的なバーコードリーダーチュートリアルを提供することを目的としています。

IronBarcodeライブラリは、バーコード画像ファイルを読み取ることができるだけでなく、カメラからストリームされた場合でも読み取ることができます。 PDFドキュメントからのバーコードの読み取りもサポートしています。 1度に1つのバーコードのみをスキャンできます。バーコードの種類は、VB.NETバーコードリーダーSDKでバーコード画像を読み取る時点で指定する必要があります。

VB .NETでカメラからバーコードを読み取る方法

  1. Visual Studioで新しいVB.NETプロジェクトを作成する

  2. IronBarcodeライブラリをインストールして、プロジェクトに適用します。

  3. Aforgeライブラリから、カメラで取得したバーコード画像を取得する

  4. IronBarcodeを使用してバーコード画像をデコードする

前提条件

  1. Visual Studio: Visual Studio または他の VB.NET 開発環境がインストールされていることを確認してください。

  2. 対応カメラ: カメラがデバイスに接続されていることを確認してください

  3. NuGet パッケージ マネージャー: NuGet を使用してプロジェクト内のパッケージを管理できるようにしてください

ステップ1: Visual Studio で新しい Visual Basic .NET プロジェクトを作成する

新しいVB.NET Windowsフォームアプリケーションを作成するか(または既存のプロジェクトを使用するか)、カメラからバーコードを読み取るコードをホストする場所を選択します。

VB .NETでカメラからバーコードを読み取る方法: 図1 - 新しいVB.NET Windowsフォームアプリケーションを作成する

次のステップでは、ソリューションおよびプロジェクト名を提供できます。

VB .NETでカメラからバーコードを読む方法: 図2 - プロジェクトの名前とソリューションを設定する

.NET バージョンを選択し、「作成」ボタンをクリックしてください。

ステップ2: IronBarcodeライブラリをインストールします

C#プロジェクトを開き、NuGetパッケージマネージャーコンソールを使用してIronBarcodeライブラリをインストールします。

Install-Package BarCode

VB .NETでカメラからバーコードを読み取る方法: 図3 - NuGet IronBarcode パッケージのインストール

NuGet パッケージは、以下に示すように Visual Studio の NuGet パッケージ マネージャーを使用してインストールすることもできます。

VB .NETでカメラからバーコードを読み取る方法: 図4 - Visual Studioのパッケージマネージャーを通じてIronBarcodeをインストールする

ステップ3: カメラからバーコードを読み取る

フィードをスキャンしてカメラから画像をキャプチャするためには、AForgeライブラリが必要です。 以下のようにNuGetパッケージマネージャーからインストールします

VB .NETでカメラからバーコードを読み取る方法: 図5 - Visual Studioパッケージマネージャーで見つかるAForgeライブラリパッケージ

次のステップは、ToolBoxからフォームにPictureBoxコントロールを追加することです。 これはカメラから画像をキャプチャするために使用されます。

VB .NETでカメラからバーコードを読み取る方法: 図6 - PictureBoxコントロールの追加

次に、以下のコードをフォームアプリケーションにコピーし、IronBarcodeからVB .NETバーコードリーダーコンポーネントを作成します。

Imports IronBarCode
Imports AForge.Video
Imports AForge.Video.DirectShow
Public Class Form1
    Private videoDevices As FilterInfoCollection
    Private videoSource As VideoCaptureDevice
    Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)
        If videoDevices.Count > 0 Then
            videoSource = New VideoCaptureDevice(videoDevices(0).MonikerString)
            AddHandler videoSource.NewFrame, AddressOf VideoSource_NewFrame
            videoSource.Start()
        Else
            MessageBox.Show("No video devices found.")
            Close()
        End If
    End Sub
    Private Sub VideoSource_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
        pictureBoxCamera.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)
        ' Process each frame for barcode recognition
        Dim image = DirectCast(pictureBoxCamera.Image, Bitmap)
        Dim result = BarcodeReader.QuicklyReadOneBarcode(image, BarcodeEncoding.QRCode Or BarcodeEncoding.Code128)
        If result IsNot Nothing Then
            ' Barcode found, handle the new result (e.g., display the barcode value)
            Dim barcodeValue As String = result.Text
            ShowBarcodeResult(barcodeValue)
        End If
    End Sub
    Private Sub ShowBarcodeResult(barcodeValue As String)
        ' Invoke on UI thread to update UI controls
        If InvokeRequired Then
            Invoke(New Action(Of String)(AddressOf ShowBarcodeResult), barcodeValue)
        Else
            ' Display the barcode font value in a MessageBox or any other UI element
            MessageBox.Show("Barcode Value: " & barcodeValue, "Barcode Detected")
        End If
    End Sub
    Private Sub MainForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        If videoSource IsNot Nothing AndAlso videoSource.IsRunning Then
            videoSource.SignalToStop()
            videoSource.WaitForStop()
        End If
    End Sub
End Class
Imports IronBarCode
Imports AForge.Video
Imports AForge.Video.DirectShow
Public Class Form1
    Private videoDevices As FilterInfoCollection
    Private videoSource As VideoCaptureDevice
    Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)
        If videoDevices.Count > 0 Then
            videoSource = New VideoCaptureDevice(videoDevices(0).MonikerString)
            AddHandler videoSource.NewFrame, AddressOf VideoSource_NewFrame
            videoSource.Start()
        Else
            MessageBox.Show("No video devices found.")
            Close()
        End If
    End Sub
    Private Sub VideoSource_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
        pictureBoxCamera.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)
        ' Process each frame for barcode recognition
        Dim image = DirectCast(pictureBoxCamera.Image, Bitmap)
        Dim result = BarcodeReader.QuicklyReadOneBarcode(image, BarcodeEncoding.QRCode Or BarcodeEncoding.Code128)
        If result IsNot Nothing Then
            ' Barcode found, handle the new result (e.g., display the barcode value)
            Dim barcodeValue As String = result.Text
            ShowBarcodeResult(barcodeValue)
        End If
    End Sub
    Private Sub ShowBarcodeResult(barcodeValue As String)
        ' Invoke on UI thread to update UI controls
        If InvokeRequired Then
            Invoke(New Action(Of String)(AddressOf ShowBarcodeResult), barcodeValue)
        Else
            ' Display the barcode font value in a MessageBox or any other UI element
            MessageBox.Show("Barcode Value: " & barcodeValue, "Barcode Detected")
        End If
    End Sub
    Private Sub MainForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        If videoSource IsNot Nothing AndAlso videoSource.IsRunning Then
            videoSource.SignalToStop()
            videoSource.WaitForStop()
        End If
    End Sub
End Class
VB.NET

以下のサンプルコードでは、QRコード、データマトリックス、およびコード128バーコードタイプのバーコード画像を読み取るように設定されています。 まず、PictureBox を使用して、ウェブカメラまたは任意のカメラデバイスからバーコードをスキャンしてバーコードの画像をキャプチャします。 次に、ビットマップ画像を作成します。 それは IronBarcode BarcodeReader クラスへの入力として提供されます。 このアプリケーションは画像から2Dバーコードを読み取り、デコードします。 デコードの結果が成功した場合、結果がメッセージボックスに表示されます。

ライセンス(無料トライアル利用可能)

IronBarcode。 このキーはappsettings.jsonに配置する必要があります。

{
    "IronBarcode.LicenseKey":"MYLICENSE.KEY.TRIAL"
}

ユーザーのメールIDを提供してトライアルライセンスを取得します。メールIDを送信すると、キ―がメールで配信されます。

VB .NET でカメラからバーコードを読み取る方法: 図 7 - トライアルフォームを正常に送信した後のポップアップ

結論

カメラからのバーコード読み取りをVB.NETで実装することは、さまざまな業界で異なるアプリケーションを強化する強力な機能です。 ライブラリのIronBarcodeを活用し、それをVB.NETプロジェクトに統合することで、今日の技術重視の世界の要求を満たす効率的で信頼性の高いバーコードスキャンアプリケーションを作成できます。 このガイドは出発点として機能し、開発者は自身の特定の要求、バーコードの種類、およびユースケースに基づいてソリューションをさらにカスタマイズおよび最適化することができます。

ジョルディ・バルディア
ソフトウェアエンジニア
ジョルディは、Iron Softwareでのスキルを活かしていないときには、ゲームプログラミングをしており、Python、C#、C++に最も堪能です。彼は製品テスト、製品開発、研究の責任を共有しており、継続的な製品改善に大きな価値をもたらしています。この多様な経験は彼を常に挑戦的で魅力的に保ち、彼はIron Softwareで働く一番好きな側面の一つだと言っています。ジョルディはフロリダ州マイアミで育ち、フロリダ大学でコンピューターサイエンスと統計学を学びました。
< 以前
VB .NETで2Dバーコードを使用する方法
次へ >
C#でCode 128バーコードを生成する方法