1Dバーコード認識
[ビジョンツール]


説明

使用上の注意点
  • パラメータ調整はあまりできません。
  • fnFIE_barcode_query_timings() で得られる処理時間に問題があり、個々の時間の和は全ての時間よりも小さくなってしまいます。
  • 現状サポートされていないバーコードや、バーコードに似たものが画像上にある場合には、それら全てを認識しようと試みるため、処理時間が著しく増大する場合があります。
  • バーコード種別 ITF, CODE39, NW7では、印刷品質の低下に弱いため読み取りミスが多くなることが予想されます。
    これらのコードを認識する必要がない場合は、認識対象コードから除外してください。ITF、CODE39に関しては認識対象から除外する代わりに fnFIE_barcode_set_checkdigit() にTRUEを指定してください。(バーコードにチェックデジットが付いている場合のみ)
  • 最も細いバーコードでも最低1.5画素必要です。
  • 斜めからの読み取りには対応していません。バーコードは光軸に対して垂直に設置してください。
  • バーコードの白黒反転には対応していません。

サンプルコード

//注 : エラーチェックは省いています。
#include "fie.h"
#include <stdio.h>

INT main()
{       
    INT i;
    INT iNoOfDecoded;
    INT iBarcodeType;
    DOUBLE dStartX, dStartY, dEndX, dEndY;
    CHAR* pcBarcodeMessage;
    FHANDLE fimg = NULL;
    FHANDLE fBOObj = NULL;  // 必ずNULLで初期化する必要があります。

    // FIEライブラリの初期化処理
    fnFIE_setup();

    // 適当な8ビットグレイ画像を用意する - 画像ファイルは適宜用意すること
    fnFIE_load_bmp( "sample.bmp", &fimg, F_COLOR_IMG_TYPE_UC8 );

    // バーコードオブジェクト生成
    fnFIE_barcode_alloc_obj(&fBOObj,2); // 1画面に最大で2つのバーコードを認識

    // EAN13 CODE 128、ITF のバーコードを認識するようにバーコード種別を設定
    fnFIE_barcode_set_types(fBOObj, F_BARCODE_EAN13 | F_BARCODE_CODE128 | F_BARCODE_ITF);   

    // 認識実行
    fnFIE_barcode_execute(fimg,fBOObj); // 256階調のグレイ画像のみ対応

    // 認識したバーコードの数を取得
    fnFIE_barcode_query_num(fBOObj,&iNoOfDecoded);

    // 認識したバーコートへの操作
    for (i=0;i<iNoOfDecoded;i++) {
        pcBarcodeMessage = NULL;  // 必ずNULLで初期化する必要があります。

        // 認識文字列を取得
        fnFIE_barcode_query_msg(fBOObj,i,&pcBarcodeMessage);
        printf(pcBarcodeMessage);

        // 必要に応じて、バーコードに関するその他の情報を取得してください。(バーコード種別, バーコードの位置、他)
        fnFIE_barcode_query_type(fBOObj,i,&iBarcodeType);
        fnFIE_barcode_query_start_stop_pos(fBOObj,i,&dStartX,&dStartY,&dEndX,&dEndY);
        //...
    }

    // オブジェクトの解放
    fnFIE_free_object(fBOObj);

    // 画像オブジェクト解放
    fnFIE_free_object(fimg);

    // FIEライブラリの終了処理
    fnFIE_teardown();

    return 0;
}


モジュール

 仕様

マクロ定義

#define F_BARCODE_EAN13   1
#define F_BARCODE_CODE39   (F_BARCODE_EAN13<<1)
#define F_BARCODE_CODE128   (F_BARCODE_EAN13<<2)
#define F_BARCODE_ITF   (F_BARCODE_EAN13<<3)
#define F_BARCODE_NW7   (F_BARCODE_EAN13<<4)
#define F_BARCODE_EAN8   (F_BARCODE_EAN13<<5)
#define F_BARCODE_ALL   (F_BARCODE_EAN13 | F_BARCODE_CODE39 | F_BARCODE_CODE128 | F_BARCODE_ITF | F_BARCODE_NW7 | F_BARCODE_EAN8)

関数

INT FVALGAPI fnFIE_barcode_execute (FHANDLE fimg, FHANDLE fBOObj)
 バーコード認識の実行
INT FVALGAPI fnFIE_barcode_alloc_obj (FHANDLE *pfBOObj, INT iMaxNoOfBarcodes)
 バーコードオブジェクト生成
INT FVALGAPI fnFIE_barcode_set_types (FHANDLE fBOObj, INT iBarcodeType)
 バーコード種別の設定
INT FVALGAPI fnFIE_barcode_get_types (FHANDLE fBOObj, INT *piBarcodeType)
 バーコード種別の取得
INT FVALGAPI fnFIE_barcode_set_binwinsize (FHANDLE fBOObj, INT iBinWinSize)
 2値化に使用する局所領域サイズの設定
INT FVALGAPI fnFIE_barcode_get_binwinsize (FHANDLE fBOObj, INT *piBinWinSize)
 2値化に使用する局所領域サイズの取得
INT FVALGAPI fnFIE_barcode_set_checkdigit (FHANDLE fBOObj, BOOL bCheckDigit)
 チェックディジットの設定(Code 39,ITFのみ有効)
INT FVALGAPI fnFIE_barcode_get_checkdigit (FHANDLE fBOObj, BOOL *pbCheckDigit)
 チェックディジットの取得(Code 39,ITFのみ有効)
INT FVALGAPI fnFIE_barcode_set_timeout (FHANDLE fBOObj, DOUBLE dTimeOut)
 タイムアウトの設定
INT FVALGAPI fnFIE_barcode_get_timeout (FHANDLE fBOObj, DOUBLE *pdTimeOut)
 タイムアウトの取得
INT FVALGAPI fnFIE_barcode_set_duplicate (FHANDLE fBOObj, BOOL bDuplicate)
 重複回答フラグの設定
INT FVALGAPI fnFIE_barcode_get_duplicate (FHANDLE fBOObj, BOOL *pbDuplicate)
 重複回答フラグの取得
INT FVALGAPI fnFIE_barcode_add_offsets (FHANDLE fBOObj, INT iOffsetX, INT iOffsetY)
 バーコード位置のオフセット量設定
INT FVALGAPI fnFIE_barcode_query_num (FHANDLE fBOObj, INT *piNoOfBarcodes)
 バーコード認識数取得
INT FVALGAPI fnFIE_barcode_query_msg (FHANDLE fBOObj, INT iBarcodeNo, CHAR **ppcMsg)
 認識したバーコード文字列の取得
INT FVALGAPI fnFIE_barcode_query_raw (FHANDLE fBOObj, INT iBarcodeNo, INT **ppiRawdata, INT *piNoOfRawdata)
 認識したバーコードに書かれたデータの取得
INT FVALGAPI fnFIE_barcode_query_start_stop_pos (FHANDLE fBOObj, INT iBarcodeNo, DOUBLE *pdStartX, DOUBLE *pdStartY, DOUBLE *pdEndX, DOUBLE *pdEndY)
 バーコード位置の取得
INT FVALGAPI fnFIE_barcode_query_type (FHANDLE fBOObj, INT iBarcodeNo, INT *piBarcodeType)
 バーコード種別取得
INT FVALGAPI fnFIE_barcode_query_timings (FHANDLE fBOObj, DOUBLE *pdImageBinarizationTime, DOUBLE *pdBlobsExtractionTime, DOUBLE *pdBlobsSelectionTime, DOUBLE *pdSignalExtractionTime, DOUBLE *pdBarcodeDecodingTime, DOUBLE *pdTotalDecodingTime)
 バーコード認識処理時間の取得

マクロ定義

#define F_BARCODE_EAN13   1

バーコード種別指定: EAN13

#define F_BARCODE_CODE39   (F_BARCODE_EAN13<<1)

バーコード種別指定: CODE39

#define F_BARCODE_CODE128   (F_BARCODE_EAN13<<2)

バーコード種別指定: CODE128

#define F_BARCODE_ITF   (F_BARCODE_EAN13<<3)

バーコード種別指定: ITF

#define F_BARCODE_NW7   (F_BARCODE_EAN13<<4)

バーコード種別指定: NW7

#define F_BARCODE_EAN8   (F_BARCODE_EAN13<<5)

バーコード種別指定: EAN8

#define F_BARCODE_ALL   (F_BARCODE_EAN13 | F_BARCODE_CODE39 | F_BARCODE_CODE128 | F_BARCODE_ITF | F_BARCODE_NW7 | F_BARCODE_EAN8)

バーコード種別: 全種類


関数

INT FVALGAPI fnFIE_barcode_execute ( FHANDLE  fimg,
FHANDLE  fBOObj 
)

バーコード認識の実行

与えられた画像からバーコードの認識(デコード)を行います。

引数:
[in] fimg 入力画像オブジェクトハンドル ( type: uc8 )
[in,out] fBOObj バーコードオブジェクトハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了。画像の種類やチャネル数が違う場合はこのエラーを出します。
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NOMEMORY メモリ不足
F_ERR_MEASURE_RUN_OVERFLOW 2値ブローブ解析中にランテーブルがオーバーフローしたため中断した
F_ERR_MEASURE_BLOB_OVERFLOW 2値ブローブ解析中にブローブテーブルがオーバーフローしたため中断した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • バーコード種別、NW7, ITF, CODE39の3つは、印刷品質の低下に弱いため読み取りミスが多くなることが予想されます。これらのコードを認識する必要がない場合は、認識対象コードから除外してください
    ITF、CODE39に関しては認識対象から除外する代わりに fnFIE_barcode_set_checkdigit() にTRUEを指定してください。(バーコードにチェックデジットが付いている場合のみ)
  • 斜めからの読み取りには対応していません。バーコードは光軸に対して垂直に設置してください。
  • 現状サポートされていないバーコードや、バーコードに似たものが画像上にある場合には、それら全てを認識しようと試みるため、処理時間が著しく増大する場合があります。
  • 一度作成したバーコードオブジェクトを使用して、何度も fnFIE_barcode_execute() でバーコード認識可能です。
参照:
fnFIE_barcode_alloc_obj()

INT FVALGAPI fnFIE_barcode_alloc_obj ( FHANDLE *  pfBOObj,
INT  iMaxNoOfBarcodes 
)

バーコードオブジェクト生成

バーコード認識のためのバーコードオブジェクトを設定します。

引数:
[out] pfBOObj バーコードオブジェクトハンドルへのポインタ(*pfBOObjはNULLで初期化してください。)
[in] iMaxNoOfBarcodes 1回の実行での認識可能な最大数
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_NOMEMORY メモリ容量不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
pfBOObj には、関数内部で必要なメモリを確保します。 メモリを確保したアドレスを指定しないでください。 安全のため、*edges がNULLで初期化されていない場合はF_ERR_INVALID_PARAMを返します。 本関数でオープンしたオブジェクトが不要になった場合には、 fnFIE_free_object() にて解放してください。
参照:
fnFIE_free_object()

INT FVALGAPI fnFIE_barcode_set_types ( FHANDLE  fBOObj,
INT  iBarcodeType 
)

バーコード種別の設定

認識を行うバーコードの種別を設定します。下記のコードから選択してください。

  • F_BARCODE_EAN13 : EAN 13
  • F_BARCODE_CODE39 : Code 39
  • F_BARCODE_CODE128 : Code 128
  • F_BARCODE_EAN8 : EAN 8
  • F_BARCODE_NW7 : NW7 (Codabar)
  • F_BARCODE_ITF : ITF (Interleaved 2 of 5)
  • F_BARCODE_ALL : 全ての種別の認識

初期値は全て認識(F_BARCODE_ALL)です。

引数:
[in] fBOObj バーコードオブジェクトハンドル
[in] iBarcodeType バーコード種別
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • バーコード種別、NW7, ITF, CODE39の3つは、印刷品質の低下に弱いため読み取りミスが多くなることが予想されます。これらのコードを認識する必要がない場合は、認識対象コードから除外してください
    ITF、CODE39に関しては認識対象から除外する代わりに fnFIE_barcode_set_checkdigit() にTRUEを指定してください。(バーコードにチェックデジットが付いている場合のみ)
  • 将来的に認識可能なバーコード種別が増えた場合、F_BARCODE_ALL の値は変更される可能性があります。認識するバーコード種別が決まっている場合には F_BARCODE_ALL を使用しないことをお勧めします。
Usage example
    // バーコード種別を EAN13 と Code 128 に設定

    ...
     // バーコードオブジェクトの生成(認識数は 2)
    fnFIE_barcode_alloc_obj( &fBOObj, 2 );
    
    // バーコード種別を EAN13 と Code 128 に設定( 認識したいバーコード種別を " | " 演算子によって指定が可能 )
    fnFIE_barcode_set_types(fBOObj, F_BARCODE_EAN13 | F_BARCODE_CODE128 ); 
    
    // EAN13 と Code 128のみ認識
    fnFIE_barcode_execute( fimg, fBOObj); 
    ...

INT FVALGAPI fnFIE_barcode_get_types ( FHANDLE  fBOObj,
INT *  piBarcodeType 
)

バーコード種別の取得

指定したオブジェクトハンドルにて設定されているバーコードの種別を取得します。 下記のコードから選択してください。

  • F_BARCODE_EAN13 : EAN 13
  • F_BARCODE_CODE39 : Code 39
  • F_BARCODE_CODE128 : Code 128
  • F_BARCODE_EAN8 : EAN 8
  • F_BARCODE_NW7 : NW7 (Codabar)
  • F_BARCODE_ITF : ITF (Interleaved 2 of 5)
  • F_BARCODE_ALL : 全ての種別の認識

初期値は全て認識(F_BARCODE_ALL)です。

引数:
[in] fBOObj バーコードオブジェクトハンドル
[out] piBarcodeType バーコード種別
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_barcode_set_binwinsize ( FHANDLE  fBOObj,
INT  iBinWinSize 
)

2値化に使用する局所領域サイズの設定

画像上のバーコードを認識する際に、適応しきい値2値化( fnFIE_sauvola_threshold() )を用いて2値画像を作成しています。 本関数では、2値化の際に使用するウィンドウサイズを指定します。

初期値 : 15 (最大 3,最小 49)

引数:
[in] fBOObj バーコードオブジェクトハンドル
[in] iBinWinSize 2値化に使用するウィンドウサイズ。奇数で指定。
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_sauvola_threshold()

INT FVALGAPI fnFIE_barcode_get_binwinsize ( FHANDLE  fBOObj,
INT *  piBinWinSize 
)

2値化に使用する局所領域サイズの取得

指定したオブジェクトハンドルにて設定されている2値化に使用する局所領域サイズを取得します

引数:
[in] fBOObj バーコードオブジェクトハンドル
[out] piBinWinSize 2値化に使用するウィンドウサイズ
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_barcode_set_checkdigit ( FHANDLE  fBOObj,
BOOL  bCheckDigit 
)

チェックディジットの設定(Code 39,ITFのみ有効)

チェックディジットによるバーコードのチェックの実行を設定します。
初期値 : 行わない(FALSE)

引数:
[in] fBOObj バーコードオブジェクトハンドル
[in] bCheckDigit チェックの有無(TRUE or FALSE)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • チェックディジットが付いていない場合に TRUEを指定した場合には、誤認識をする可能性が高くなります。
    バーコードにチェックディジットが付いていない、もしくは付いているかどうかわからないような状況では FALSEを指定してください。
  • Code39,ITF では本パラメータがTRUEの場合には、 fnFIE_barcode_query_msg() にてチェックディジットを返すことはしません。
  • 本パラメータによって fnFIE_barcode_query_msg() 関数で得られる出力文字列に違いが出ます。
    FALSE:チェックディジット文字列が表示される(文字列として意味があるとみなし出力)
    TRUE :チェックディジット文字列は表示されない(単なるチェック記号として出力しない)
  • ITFでは、特にチェックディジットの計算方法が決められていません。本ライブラリではモジュラス10(ウェイト3)を採用しています。
    チェックディジットの計算方法がわからない、もしくはそれ以外の計算方法を用いている場合には FALSEを指定してください。
    • モジュラス10(ウェイト3)について
      <計算式>
      (1) 読み取ったデータを奇数桁と偶数桁に分けて、奇数桁には重み 3 を、偶数桁には重み 1 をかけて総和を求める。
      (2) 総和を 10 で割ってその 余りを求める。
      (3) 求めた余りを 10 から引いた値がチェックデジットとなる。(ただし、余りが 0 の場合には、チェックディジットも 0)
      <計算例> (値は 12356 の場合)
      (1) (1+3+6)×3 + (2+5)×1 = 37
      (2) 37/10 = 3 余り 7
      (3) 10-7 = 3 よって、チェックデジット = 「 3 」
  • Code128, EAN-8,EAN-13では仕様上チェックディジットのチェックを行いますので、本パラメータによって変更することはありません。
参照:
fnFIE_barcode_query_msg()

INT FVALGAPI fnFIE_barcode_get_checkdigit ( FHANDLE  fBOObj,
BOOL *  pbCheckDigit 
)

チェックディジットの取得(Code 39,ITFのみ有効)

指定したオブジェクトハンドルにて設定されているチェックディジットを取得します

引数:
[in] fBOObj バーコードオブジェクトハンドル
[out] pbCheckDigit チェックの有無
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_barcode_set_timeout ( FHANDLE  fBOObj,
DOUBLE  dTimeOut 
)

タイムアウトの設定

バーコードの認識を打ち切る制限時間を設定します。

初期値 : 5000(ms)

引数:
[in] fBOObj バーコードオブジェクトハンドル
[in] dTimeOut タイムアウト時間(ms)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
現状サポートされていないバーコードや、バーコードに似たものが画像上にある場合には、それら全てを認識しようと試みるため、処理時間が著しく増大する場合があります。そこで、このような現象を回避するために本ライブラリで制限時間を指定することが出来ます。

INT FVALGAPI fnFIE_barcode_get_timeout ( FHANDLE  fBOObj,
DOUBLE *  pdTimeOut 
)

タイムアウトの取得

指定したオブジェクトハンドルにて設定されているバーコードの認識を打ち切る制限時間を取得します。

引数:
[in] fBOObj バーコードオブジェクトハンドル
[out] pdTimeOut タイムアウト時間(ms)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_barcode_set_duplicate ( FHANDLE  fBOObj,
BOOL  bDuplicate 
)

重複回答フラグの設定

1回の認識時に、同じバーコード種別の同じ文字列の回答の認識を許可するか否かを設定します。
初期値:複数検出を許可する(TRUE)

引数:
[in] fBOObj バーコードオブジェクトハンドル
[in] bDuplicate 重複回答許可 (TRUE or FALSE)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_barcode_get_duplicate()

INT FVALGAPI fnFIE_barcode_get_duplicate ( FHANDLE  fBOObj,
BOOL *  pbDuplicate 
)

重複回答フラグの取得

指定したオブジェクトハンドルにて設定されている、重複回答を許可するか否かの設定を取得します。

引数:
[in] fBOObj バーコードオブジェクトハンドル
[out] pbDuplicate 重複回答許可
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_barcode_set_duplicate()

INT FVALGAPI fnFIE_barcode_add_offsets ( FHANDLE  fBOObj,
INT  iOffsetX,
INT  iOffsetY 
)

バーコード位置のオフセット量設定

認識したバーコードの位置(x,y)に対するオフセット量を画素で指定します。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[in] iOffsetX X 座標オフセット量(0<=)
[in] iOffsetY Y 座標オフセット量(0<=)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_barcode_query_num ( FHANDLE  fBOObj,
INT *  piNoOfBarcodes 
)

バーコード認識数取得

fnFIE_barcode_execute() 関数によって正常に認識したバーコードの数を取得します。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[out] piNoOfBarcodes 認識したバーコード数
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_barcode_alloc_obj(), fnFIE_barcode_execute()

INT FVALGAPI fnFIE_barcode_query_msg ( FHANDLE  fBOObj,
INT  iBarcodeNo,
CHAR **  ppcMsg 
)

認識したバーコード文字列の取得

fnFIE_barcode_execute() 関数によって正常に認識したバーコードの文字列を取得します。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[in] iBarcodeNo バーコード番号
[out] ppcMsg 指定したバーコード番号で得られた認識文字列(*ppcMsgはNULLで初期化してください。)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • *ppcMsg は必ず NULLで初期化しておいてください。
  • 結果の格納用に本関数でメモリを確保するわけではなく、 fnFIE_barcode_execute() での認識時に fBOObjに 作成されたバッファを参照するだけです。よって、得られた結果は fBOObj を fnFIE_free_object() によって解放、もしくは再度 fnFIE_barcode_execute() を実行するまで有効で、*ppcMsg にて得られたアドレスを解放する必要はありません。
  • バーコード番号の指定は、 fnFIE_barcode_query_num() にて、認識したバーコードの数を取得しておいてください。値は 0 から(取得バーコード数-1)まで有効です。
  • fnFIE_barcode_query_msg() で得られる文字列について

    EAN-8/EAN-13 ITF CODE39 CODE128 NW-7
    Check Digitの挿入 set_checkdigitの設定値に関わらず返す(※1) set_checkdigitの設定値を参照し、TRUEの場合には返さない set_checkdigitの設定値を参照し、TRUEの場合には返さない set_checkdigitの設定値に関わらず返さない(※2) check digit 未対応。読むことは可能だがチェックはしない。よって文字列として返る
    スタートコード 返さない
    (レフトガードバー)
    返さない 返さない。
    *で表されるため、Rawデータでは返す。
    返さない。
    意味(文字列変換ルール)はあるためRawデータで返す。
    返さない。
    意味(a,b,c,d)はあるためRawデータで返す。
    ストップコード 返さない
    (ライトガードバー)
    返さない 返さない。
    *で表されるため、Rawデータでは返す。
    返さない。 返さない。
    意味(a,b,c,d)はあるためRawデータで返す。
    センターバー 返さない 無し 無し 無し 無し
    ASCII1文字で表せないもの 無し 無し 無し [ ]で囲んで返す(※3)
    [NUL],[STX],[FNC1]等
    無し
    その他 無し 無し 無し Start_?,SHIFT,CODE_?等、文字コードの指定を表すものについては値を返さない。Rawデータでは返す。 無し
    (※1)バーコードの下に表記される目視文字列に含まれるため返します。
    (※2)バーコードの下に表記される目視文字列に含まれないため返しません。
    (※3)データとして " [ "及び " ] " が格納されることもあり、 fnFIE_barcode_query_msg() の回答だけでは判別不可能な場合もあります(例.5つのデータ "[", "S", "T", "X", "]" と 1つのデータ"[STX]")。このようなデータを明確に区別する必要がある場合には fnFIE_barcode_query_raw() の回答を参照する必要があります。

参照:
fnFIE_barcode_execute(), fnFIE_barcode_query_num(), fnFIE_barcode_set_checkdigit()

INT FVALGAPI fnFIE_barcode_query_raw ( FHANDLE  fBOObj,
INT  iBarcodeNo,
INT **  ppiRawdata,
INT *  piNoOfRawdata 
)

認識したバーコードに書かれたデータの取得

fnFIE_barcode_execute() 関数によって正常に認識した際に、文字列に変換する前の生のデータ(整数値)とその数を取得します。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[in] iBarcodeNo 認識ドしたバーコード番号
[out] ppiRawdata 指定したバーコード番号に対応する文字列変換前のバーコードデータ(*ppiRawdataはNULLで初期化してください。)
[out] piNoOfRawdata 指定したバーコード番号に対応する文字列変換前のバーコードデータ数
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • *ppiRawdata は必ず NULLで初期化しておいてください。
  • 結果の格納用に本関数でメモリを確保するわけではなく、 fnFIE_barcode_execute() での認識時に fBOObjに 作成されたバッファを参照するだけです。よって、得られた結果は fBOObj を fnFIE_free_object() によって解放、もしくは再度 fnFIE_barcode_execute() を実行するまで有効で、*ppcMsg にて得られたアドレスを解放する必要はありません。
  • バーコード番号の指定は、 fnFIE_barcode_query_num() にて、認識したバーコードの数を取得しておいてください。値は 0 から(取得バーコード数-1)まで有効です。
  • fnFIE_barcode_query_raw() で得られる値について

    EAN-8/EAN-13 ITF CODE39 CODE128 NW-7
    スタートコード 返さない
    (レフトガードバー)
    返さない 返す
    (値は43)
    返す
    (値は103 or 104 or 105)
    返す
    (値は16 or 17 or 18 or 19)
    ストップコード 返さない
    (ライトガードバー)
    返さない 返す
    (値は43)
    返さない 返す
    (値は16 or 17 or 18 or 19)
    センターバー 返さない 無し 無し 無し 無し

参照:
fnFIE_barcode_execute(), fnFIE_barcode_query_num()

INT FVALGAPI fnFIE_barcode_query_start_stop_pos ( FHANDLE  fBOObj,
INT  iBarcodeNo,
DOUBLE *  pdStartX,
DOUBLE *  pdStartY,
DOUBLE *  pdEndX,
DOUBLE *  pdEndY 
)

バーコード位置の取得

fnFIE_barcode_execute() 関数によって正常に認識したバーコードの位置を取得します。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[in] iBarcodeNo 認識したバーコード番号
[out] pdStartX 指定したバーコード番号に対応するバーコード位置 始点 X(画素)
[out] pdStartY 指定したバーコード番号に対応するバーコード位置 始点 Y(画素)
[out] pdEndX 指定したバーコード番号に対応するバーコード位置 終点 X(画素)
[out] pdEndY 指定したバーコード番号に対応するバーコード位置 終点 Y(画素)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • バーコード番号の指定は、 fnFIE_barcode_query_num() にて、認識したバーコードの数を取得しておいてください。値は 0 から(取得バーコード数-1)まで有効です。
参照:
fnFIE_barcode_execute(), fnFIE_barcode_query_num()

INT FVALGAPI fnFIE_barcode_query_type ( FHANDLE  fBOObj,
INT  iBarcodeNo,
INT *  piBarcodeType 
)

バーコード種別取得

fnFIE_barcode_execute() 関数によって正常に認識した際のバーコード種別を取得します。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[in] iBarcodeNo 認識したバーコード番号
[out] piBarcodeType バーコード番号に対応するバーコード種別
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 異常終了(パラメータが不正)
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
注意:
  • バーコード番号の指定は、 fnFIE_barcode_query_num() にて、認識したバーコードの数を取得しておいてください。値は 0 から(取得バーコード数-1)まで有効です。
参照:
fnFIE_barcode_execute(), fnFIE_barcode_query_num()

INT FVALGAPI fnFIE_barcode_query_timings ( FHANDLE  fBOObj,
DOUBLE *  pdImageBinarizationTime,
DOUBLE *  pdBlobsExtractionTime,
DOUBLE *  pdBlobsSelectionTime,
DOUBLE *  pdSignalExtractionTime,
DOUBLE *  pdBarcodeDecodingTime,
DOUBLE *  pdTotalDecodingTime 
)

バーコード認識処理時間の取得

fnFIE_barcode_execute() 関数の処理時間とその内訳を取得します。 処理時間を知る必要の無いパラメータには NULL を指定することも可能です。

引数:
[in] fBOObj バーコードオブジェクトのハンドル
[out] pdImageBinarizationTime 2値化処理時間(ms)
[out] pdBlobsExtractionTime 2値画像からの塊抽出処理時間(ms)
[out] pdBlobsSelectionTime 抽出した塊の選別処理時間(ms)
[out] pdSignalExtractionTime 選別後の塊からバーコードの認識時間(ms)
[out] pdBarcodeDecodingTime バーコードの認識処理時間(ms)
[out] pdTotalDecodingTime トータル処理時間(ms)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトハンドルが渡されたため、異常終了。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_barcode_execute()


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:48 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2