QRDライブラリはアプリケーションにQRコードのデコード機能を提供するライブラリです。
QRDライブラリは画像サイズが最大VGAサイズ、QRコードのバージョンは40までデコード可能です。
通常のAPIは、一度画像を渡されたら、成功・失敗にかかわらず、処理が完了するまで、APIのコール側に制御が戻りませんので注意してください。
本バージョンが対応しているQRコードの仕様は次の通りです。
QRコード仕様
QRコードバージョン | バージョン1~40。 |
---|---|
モデル | モデル2のみ |
モード | 数字モード:0~9(ASCIIコードの0x30~0x39) 英数字モード:0~9(ASCIIコードの0x30~0x39)、A~Z(ASCIIコードの0x41~0x5A)、半角スペース、$、%、*、+、-、.、/、:の記号(ASCIIコードの0x20,0x24,0x25,0x2A,0x2B,0x2D~0x2F,0x3A) 漢字モード:JIS X 0208に基づくShift-JIS漢字。 8ビットバイトモード:、JIS X 0201(ASCIIコード0x00~0xFF)に基づくデータ。英小文字a~z(ASCII値0x61~0x7A)はこのモードに含まれる。 混在モード:上記の4つを組み合わせたデータ。 連結モード:複数のQRコードにデータを分割。 FNC1モード及びECIモードには対応していません。 |
誤り訂正能力 | L,M,H,Q(推奨値はM) |
上記の仕様は、認識対象の印刷条件(鮮明さ、紙質)や画像の撮影条件(明るさ、手ぶれ度合)によって変化いたします。
カラー印刷されたQRコードも認識可能ですが印刷状況等により読めない色もあります。
本ライブラリを使用する際は、下記の点に注意してください。
3DS シリーズの画面から読み込む場合 | 1 セル当たり 2 ドット以上を推奨 |
---|---|
GamePad の画面から読み込む場合 | 1 セル当たり 2 ドット以上を推奨 |
印刷した QR コードを読み込む場合 |
3DS シリーズのカメラで読み込む場合は、印刷サイズを 0.45mm/セル 以上にしてください。
WiiU の GamePad のカメラで読み込む場合は、印刷サイズを 0.50mm/セル 以上にしてください。
いずれのカメラで読み込む場合も、バージョンの最大値は下記に従ってください。
|
CTRカメラライブラリで撮影した画像をQRDライブラリでデコードする場合の推奨設定値です。
解像度 | VGA |
---|---|
フレームレート | 15fps (初期値) |
出力フォーマット | YUV422 |
エフェクト処理 | なし |
反転処理 | なし |
撮影モード | 文字モード |
ホワイトバランス | 自動 |
露光(蓄光時間) | 自動 |
シャープネス | +5 |
なお、CTRのカメラライブラリにおいて、シャープネスを変更した後、撮影モードを変更すると、シャープネスの値が変わってしまいます。
上記推奨カメラ設定値を使用する場合は、先に撮影モードを文字モードに設定したあと、シャープネスの値を+5に設定してください。
QRデコードの手順は、一般的には以下のようになります。
1. GetDecodeBufferSize()にデコード対象の画像の幅と高さの最大値を渡して、デコードに必要なバッファサイズを取得します。
QRコードは最大16個に分割してデータを格納することができます。QRDライブラリでもこの連結QRコードに対応しています。
対象としているQRコードが連結QRコードの場合、DecodeDataのtotalとindexに有効な値が設定されます。連結QRコードでない場合は、totalの値が「0」に設定されます。
また、同時にDecodeDataのparityには分割したときの元データ全体のパリティ情報が格納されます。アプリケーション側で連結するときに、totalとindexで連結順番を確認し、各QRコードのparity値が同じかどうかを比較することで、正しい分割QRコードかどうかを確認してください。
QRコードの分割方法は、元の全体のデータを論理的に適当に分割してQRコードのデータとして格納されます。このとき、全角文字(漢字やひらがな)が含まれている場合、漢字は2バイト単位で分割されます。
つまり、2バイト文字の途中では分割されません。
元の全体のQRデータをQRコードにした場合。「abcdefg日本」が格納されています。 | |||
![]() | |||
これを4つのQRコードに分割した場合 | |||
![]() |
![]() |
![]() |
![]() |
ab | cde | fg | 日本 |
アプリケーション側で連結するときは、連結する順番及びすべてのデータが正しい分割であることを確認したら、単純に結合するだけで元のデータになります。
QRコードには格納するデータのコンテンツタイプを設定する機能はありません。従ってQRコードをデコードするアプリケーション側にて、デコードして得られたデータのコンテンツタイプを判断する必要があります。
詳しくは、サンプルデモを参考にしてください。
本ライブラリでのデコード可能な画像の画素数は、幅640dot、高さ480dot以下となっております。
CTRカメラで撮影した画像をデコードする場合、カメラのサイズは画像の質によりVGAサイズを推奨いたします。
カメラ画像をデコードする場合、VGAサイズでキャプチャした画像のデコード領域を指定してExecuteDecode()に渡すようにしてください。
本ライブラリはスレッドセーフではありませんので、各APIを割り込みハンドラや異なるスレッドから呼び出した場合、正常に動作しない可能性があります。