【HALCON】バーコード・2Dコード完全ガイド - 検出から読み取りまで
HALCONのバーコード・2Dコード認識機能は、産業用アプリケーションで広く使用されています。製造ライン、物流、在庫管理など様々な場面でコード読み取りを実現します。
1Dバーコード
create_bar_code_model - バーコードモデルの作成
バーコードを検出・読み取るためのモデルを作成します。
create_bar_code_model(GenParamName, GenParamValue, BarCodeHandle)
パラメータ:
GenParamName: モデルの生成パラメータ名GenParamValue: パラメータ値BarCodeHandle: 作成されたモデルのハンドル
* 基本的なバーコードモデルの作成
create_bar_code_model([], [], BarCodeHandle)
* パラメータを指定してモデルを作成
create_bar_code_model(['element_size_min', 'element_size_max'], [1.5, 3.0], BarCodeHandle)
find_bar_code - バーコードの検出と読み取り
画像内のバーコードを検出し、デコードします。
find_bar_code(Image, SymbolRegions, BarCodeHandle, CodeType, DecodedDataStrings)
パラメータ:
Image: 入力画像SymbolRegions: 検出されたバーコード領域CodeType: バーコードタイプ(‘EAN-13’, ‘Code 39’など)DecodedDataStrings: デコードされたデータ
* バーコードの検出と読み取り
read_image(Image, 'product_barcode.png')
create_bar_code_model([], [], BarCodeHandle)
find_bar_code(Image, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedData)
* 結果の表示
dev_display(Image)
dev_set_color('green')
dev_display(SymbolRegions)
対応バーコードタイプ
| タイプ | 説明 |
|---|---|
| EAN-13 | 国際商品コード(13桁) |
| EAN-8 | 短縮商品コード(8桁) |
| UPC-A | 米国商品コード(12桁) |
| Code 39 | 英数字対応の汎用コード |
| Code 128 | 高密度バーコード |
| Interleaved 2/5 | 数字専用、物流向け |
| Codabar | 医療・図書館向け |
| Pharmacode | 製薬業界向け |
2Dデータコード
create_data_code_2d_model - 2Dコードモデルの作成
QRコードやData Matrixなどの2Dコードを認識するモデルを作成します。
create_data_code_2d_model(SymbolType, GenParamName, GenParamValue, DataCodeHandle)
パラメータ:
SymbolType: コードタイプ(‘QR Code’, ‘Data Matrix’など)GenParamName: パラメータ名GenParamValue: パラメータ値DataCodeHandle: モデルハンドル
* QRコードモデルの作成
create_data_code_2d_model('QR Code', [], [], DataCodeHandle)
* Data Matrixモデルの作成
create_data_code_2d_model('Data Matrix ECC 200', [], [], DataCodeHandle)
* パラメータを指定してモデルを作成
create_data_code_2d_model('QR Code', ['default_parameters'], ['enhanced_recognition'], DataCodeHandle)
find_data_code_2d - 2Dコードの検出と読み取り
画像から2Dコードを検出し、内容を読み取ります。
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, DecodedDataStrings)
パラメータ:
Image: 入力画像SymbolXLDs: 検出されたコードの輪郭(XLD)ResultHandles: 検出結果のハンドルDecodedDataStrings: デコードされたデータ
* QRコードの検出と読み取り
read_image(Image, 'qr_code_image.png')
create_data_code_2d_model('QR Code', [], [], DataCodeHandle)
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, DecodedData)
* 結果の表示
dev_display(Image)
dev_set_color('green')
dev_display(SymbolXLDs)
disp_message(WindowHandle, DecodedData, 'window', 12, 12, 'black', 'true')
対応2Dコードタイプ
| タイプ | 説明 |
|---|---|
| QR Code | 日本発祥、高容量、広く普及 |
| Data Matrix ECC 200 | 小型部品向け、エラー訂正強力 |
| PDF417 | 大容量、運転免許証等に使用 |
| Aztec Code | 交通チケット等に使用 |
| Micro QR Code | QRコードの小型版 |
モデルの管理
set_bar_code_param / get_bar_code_param
* パラメータの設定
set_bar_code_param(BarCodeHandle, 'meas_thresh', 0.5)
* パラメータの取得
get_bar_code_param(BarCodeHandle, 'meas_thresh', Value)
set_data_code_2d_param / get_data_code_2d_param
* パラメータの設定
set_data_code_2d_param(DataCodeHandle, 'timeout', 1000)
* パラメータの取得
get_data_code_2d_param(DataCodeHandle, 'timeout', Value)
clear_bar_code_model / clear_data_code_2d_model
* メモリ解放
clear_bar_code_model(BarCodeHandle)
clear_data_code_2d_model(DataCodeHandle)
実用的な設定
低品質画像での読み取り
* バーコード:閾値を下げて検出感度を上げる
create_bar_code_model(['meas_thresh'], [0.3], BarCodeHandle)
* 2Dコード:拡張認識モードを使用
create_data_code_2d_model('QR Code', ['default_parameters'], ['enhanced_recognition'], DataCodeHandle)
複数コードの同時読み取り
* 画像内の全バーコードを読み取り
find_bar_code(Image, SymbolRegions, BarCodeHandle, 'auto', DecodedData)
* 複数の2Dコードを読み取り
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, DecodedData)
* DecodedDataにはすべてのコードのデータが格納される
タイムアウト設定
* 処理時間の制限
set_data_code_2d_param(DataCodeHandle, 'timeout', 500) * 500ms
応用例
製造ラインでの製品管理
* 製品バーコードの読み取りと検証
create_bar_code_model([], [], BarCodeHandle)
find_bar_code(Image, SymbolRegions, BarCodeHandle, 'Code 128', ProductCode)
if (|ProductCode| > 0)
* 製品コードの検証処理
check_product_code(ProductCode, IsValid)
endif
物流でのトラッキング
* パッケージのQRコード読み取り
create_data_code_2d_model('QR Code', [], [], DataCodeHandle)
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, TrackingInfo)
* トラッキング情報の解析
parse_tracking_info(TrackingInfo, ShipmentID, Destination)
品質検査
* コードの印刷品質チェック
get_data_code_2d_result(DataCodeHandle, ResultHandles, 'quality_isoiec15415', QualityGrade)
if (QualityGrade < 'C')
* 印刷品質が基準以下
log_quality_issue(Image, QualityGrade)
endif
コード認識の比較
| 項目 | 1Dバーコード | 2Dコード |
|---|---|---|
| データ容量 | 小(〜50文字) | 大(〜数千文字) |
| 読み取り速度 | 高速 | 中程度 |
| 部分的な損傷耐性 | 低い | 高い(エラー訂正) |
| 印刷面積 | 横長 | コンパクト |
| 主な用途 | 商品管理 | 製造・物流・認証 |
まとめ
HALCONのバーコード・2Dコード認識機能は、産業用途に必要な高い信頼性と柔軟性を提供します。用途に応じて適切なコードタイプを選択し、パラメータを調整することで、効率的なコード認識システムを構築できます。
Recommend
2024-09-13
【HALCON】regiongrowing 関数について - 領域拡張によるセグメンテーション
2024-09-13
【HALCON】rgb1_to_gray 関数について - RGB画像をグレースケール画像に変換
2024-09-13
【HALCON】sobel_amp 関数について - Sobelフィルタによるエッジ強度の計算
2024-09-13
【HALCON】write_image 関数について - 画像の保存
2024-09-13
【HALCON】xyz_to_object_model_3d 関数について - XYZデータから3Dオブジェクトモデルの生成
2024-09-12
【HALCON】read_cam_par 関数について - カメラパラメータの読み込み
2024-09-12
【HALCON】read_object_model_3d 関数について - 3Dオブジェクトモデルの読み込み
2024-09-12
【HALCON】read_ocr_class_mlp 関数について - MLP OCRクラス分類器の読み込み
2024-09-12
【HALCON】set_system 関数について - システムパラメータの設定
2024-09-12
【HALCON】smallest_circle 関数について - 最小外接円の計算
2024-09-12
【HALCON】smallest_rectangle1 関数について - 最小外接矩形(軸平行)の計算
2024-09-12
【HALCON】タプル操作完全ガイド - tuple関数リファレンス