API
Table of Contents
型および構造体
QrDecoderHandle
typedef void * QrDecoderHandle;
QRデコーダハンドル
QrCodeHeader
typedef struct{
int model; // モデル番号
int version; // 型番
int level; // 誤り訂正レベル
//int mode; // 本文モード (未実装)
//int eci_mode; // 本文ECIモード (未実装)
int charactor_size; // 本文文字数
int byte_size; // 本文バイト数
} QrCodeHeader;
QRコードヘッダ構造体
コンストラクタ
qr_decoder_open
QrDecoderHandle qr_decoder_open();
- 引数: なし
- 戻り値: QRデコーダハンドル
デコーダを初期化する。
qr_decoder_open_with_image_size
QrDecoderHandle qr_decoder_open_with_image_size(
int width,
int height,
int depth,
int channel
);
- 引数:
- int width : 画像バッファの幅(pixel)
- int height : 画像バッファの高さ(pixel)
- int depth : 画像バッファのピクセルあたりのbit数
- int channel : 画像バッファのチャンネル数
- 戻り値: QRデコーダハンドル
画像バッファの幅,高さ,ピクセルあたりのbit数,チャンネル数を指定してデコーダを初期化する。
ピクセルあたりのbit数はIPL_DEPTH_8UなどOpenCVの定数を指定する。
一般的な24bitフルカラー画像では depth = IPL_DEPTH_8U, channel = 3 と指定する。
入力画像のサイズが既知の場合,バッファサイズを指定してデコーダを初期化することで,バッファ確保にかかるオーバーヘッドを低減できる。
デストラクタ
qr_decoder_close
void qr_decoder_close(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値:なし
デコーダ内の各バッファを破壊し終了処理を行う。
バッファ初期化
Webカメラからの入力など,フォーマットの一定した画像を連続で扱う際に使用する。
qr_decoder_set_image_size
qr_decoder_set_image_size(
QrDecoderHandle decoder,
int width,
int height,
int depth,
int channel
);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- int width : 画像バッファの幅(pixel)
- int height : 画像バッファの高さ(pixel)
- int depth : 画像バッファのピクセルあたりのbit数
- int channel : 画像バッファのチャンネル数
- 戻り値: QRデコーダハンドル
デコーダの入力画像バッファの幅,高さ,ピクセルあたりのbit数,チャンネル数を指定する。
qr_decoder_open()で初期化したデコーダのバッファのサイズ指定,およびqr_decoder_open_with_image_size()で初期化したデコーダのバッファサイズの再指定を行う。
qr_decoder_set_image_buffer
QrDecoderHandle qr_decoder_set_image_buffer(
QrDecoderHandle decoder,
IplImage *src
);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- IplImage *src : 画像バッファへのポインタ
- 戻り値: QRデコーダハンドル
srcとして指定したIplImage形式の画像バッファをデコーダの画像バッファとする。
指定するバッファはtop-left origin (src->origin==0)で無ければならない。
bottom-left origin (src->origin==1)の場合は,highguiのcvConvertImage()などでtop-left originに変換すること。
IplImageの構造はOpenCVのマニュアルを参照のこと。
バッファ取得
qr_decoder_get_image_buffer
IplImage *qr_decoder_get_image_buffer(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値: IplImage型のバッファへのポインタ
qr_decoder_open_with_image_size(), qr_decoder_set_image_size()およびqr_decoder_set_image()で設定された原画像を格納するバッファのアドレスを取得する。
qr_decoder_get_transformed_image_buffer
IplImage *qr_decoder_get_transformed_image_buffer(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値: IplImage型のバッファへのポインタ
歪み補正済みカラー画像を格納するバッファのアドレスを取得する。(デバッグ用)
qr_decoder_get_binarized_image_buffer
IplImage *qr_decoder_get_binarized_image_buffer(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値: IplImage型のバッファへのポインタ
二値画像を格納するバッファのアドレスを取得する。(デバッグ用)
qr_decoder_get_tmp_image_buffer
IplImage *qr_decoder_get_tmp_image_buffer(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値: IplImage型のバッファへのポインタ
ワークバッファのアドレスを取得する。(デバッグ用)
デコード
qr_decoder_decode
short qr_decoder_decode(
QrDecoderHandle decoder,
int adaptive_th_size=DEFAULT_ADAPTIVE_TH_SIZE,
int adaptive_th_delta=DEFAULT_ADAPTIVE_TH_DELTA
);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- int adaptive_th_size : 動的二値化処理ブロックサイズ
- int adaptive_th_delta : 動的二値化処理差分閾値
- 戻り値: デコード結果ステータス
初期化済みバッファの内容をデコードする。
adaptive_th_sizeは3以上の奇数または0以下の値を指定すること。
adaptive_th_sizeに0以下の値を指定したときは,adaptive_th_deltaを閾値とする固定二値化処理が行われる。
デコード結果ステータスはqrerror.hで定義された値のうち該当するものをOR処理したものとなる。
ex)
- デコード成功時: QR_IMAGEREADER_DECODED
- デコードには成功したが本文に修復不能なエラーが含まれていたとき: QR_IMAGEREADER_DECODED|QR_CODEDATA_UNRECOVERABLE
- 画像からQRコードを特定できずデコードに失敗したとき: QR_IMAGEREADER_ERROR|QR_IMAGEREADER_NOT_FOUND_FINDER_PATTERN
qr_decoder_decode_image
short qr_decoder_decode_image(
QrDecoderHandle decoder,
IplImage *src,
int adaptive_th_size=DEFAULT_ADAPTIVE_TH_SIZE,
int adaptive_th_delta=DEFAULT_ADAPTIVE_TH_DELTA
);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- IplImage *src : 画像バッファへのポインタ
- int adaptive_th_size : 動的二値化処理ブロックサイズ
- int adaptive_th_delta : 動的二値化処理差分閾値
- 戻り値: デコード結果ステータス。
srcに与えられた画像をデコードする。
srcとして指定したIplImage形式の画像バッファをデコーダの画像バッファとする。
指定するバッファはtop-left origin (src->origin==0)で無ければならない。
bottom-left origin (src->origin==1)の場合は,highguiのcvConvertImage()などでtop-left originに変換すること。
デコード済みデータ取得
qr_decoder_get_header
int qr_decoder_get_header(
QrDecoderHandle decoder,
QrCodeHeader *header
);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- QrCodeHeader *header : QRコードヘッダ構造体を格納するバッファへのポインタ
- 戻り値: 失敗時:0,成功時:1
QRコードヘッダ構造体を取得し,headerに指定されたバッファに格納する。
qr_decoder_get_body
int qr_decoder_get_body(
QrDecoderHandle decoder,
unsigned char *buf,
int buf_size
);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- unsigned char *buf : QRコード本文を格納するバッファへのポインタ
- int buf_size : バッファサイズ(byte)
- 戻り値: 失敗時:0,成功時:格納された本文のbyte数
QRコード本文を取得し,bufに指定されたバッファに格納する。
格納された本文には,その形式に関わらず,終端文字'\0'が追加されない。
ただしバッファは事前に0クリアされるので,qr_decoder_get_header()で取得できる本文のbyte数より大きなサイズのバッファを用意することで終端文字のかわりとできる。
デコーダ状態取得
qr_decoder_get_status
short qr_decoder_get_status(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値: ステータスコード
ステータスはqrerror.hで定義された値のうち該当するものをOR処理したものとなる。
qr_decoder_is_busy
int qr_decoder_is_busy(QrDecoderHandle decoder);
- 引数:
- QrDecoderHandle decoder : QRデコーダハンドル
- 戻り値: デコード中:1, アイドル:0
デコード実行中か否かの状態を戻す。
バージョン情報
バージョン情報は "Major.Minor.Teeny Suffix (Revision)" から構成され,Major, Minor, Teenyはリリース時に更新される。
開発中バージョンは,時期リリース予定の"Major.Minor.Teeny"のあとにSuffixとして"-dev"を付加し,開発中バージョン間は Revisionで区別する。
qr_decoder_version
char *qr_decoder_version();
- 引数: なし
- 戻り値: バージョン情報 (文字列)へのポインタ
qr_decoder_version_major
int qr_decoder_version_major();
- 引数: なし
- 戻り値: メジャーバージョン
qr_decoder_version_minor
int qr_decoder_version_minor();
- 引数: なし
- 戻り値: マイナーバージョン
qr_decoder_version_teeny
int qr_decoder_version_teeny();
- 引数: なし
- 戻り値: ティニアバージョン
qr_decoder_version_suffix
char *qr_decoder_version_suffix();
- 引数: なし
- 戻り値: バージョンサフィックス(文字列)へのポインタ
qr_decoder_version_revision
char *qr_decoder_version_revision();
- 引数: なし
- 戻り値: リビジョン情報(文字列)へのポインタ
Last-modified: 2007-02-27

