2013年9月10日火曜日

Latitude10とポメラ(QRコードの読み取り)

ポメラのQRコードによる文章転送機能は、ちょっとした文章を入力して利用したいときに便利です。気楽なのですよね。送りたい文章の一部(もちろん全部でもいい)を選択して、QRコードボタンを押して、あとは読みとればよいだけです。IDEOSも、ほとんど、このQRコードの読み取りに利用しているようなものです。ケーブルの接続もいらない、Bluetooth接続を確立する必要もない、いつも通り
の手慣れた写真を撮るという操作だけで済むというのが気楽です。

Latitude10では、Bluetooth転送で、文章の相互転送ができますが、気軽にQRコードで文章を送りたいと思うわけです。実は、Bluetooth接続で、ポメラの電池残量がどんどん減っていくのが気がかりなのですが。

というわけで、Windows8のアプリでなにかよいQRコードリーダーがないかとストアを覗いたのですが、読みとった文章を利用できるものが見つかりません。Windows用のソフトウェアはどうかと探してみました。Webページなどにある画像のQRコードを読み取るソフトはあるようですが、Webカメラを使って読み込むのは、手頃なものが見つかりません。そこで、自分用にwxPythonで作ってみました。QRコードを読みとる部分は、AndroidでおなじみのZXingを利用します。IDEOSでもポメラの連結QRコードを読み込む実績がありますしね。

ZXing-2.1のzipアーカイブには、コンパイル済みのcore.jar、javase.jar、w.warファイルがあるので、これらを使えば、コマンドラインでZXingを利用できますので、それを呼び出す部分さえ作ればよいわけです。

ZXingをコマンドラインで使うには、前述のファイルを一つのフォルダにコピーして、

java -cp javase.jar;core.jar com.google.zxing.client.j2se.CommandLineRunner target.png

とするとtarget.pngが解析されます。Windowsではクラスライブラリを指定する区切りがセミコロン;ですので注意が必要です。com.google.zxing.client.j2se.CommandLineRunnerが実行するクラスです。

pythonから、このコマンドをsubprocessで呼び出して、QR_CODEとして認識されたときだけ、文字列を得るようにしました。

Webカメラは、VideoCaptureモジュールを使って、画像を取り込みました。
このモジュールをインストールするには、単に対応するバージョンのフォルダをPythonのフォルダに投げ込めばよさそうなのですが、DLLsおよびlibsにばらばらに入ってしまいそうです。そこで、Python27\Lib\site-packagesにVideoCaptureというフォルダを作って、DLLsやLibにあるファイルをコピーしました。さらに、site-packagesにVideoCapture.pthというファイルを作成して、中にVideoCaptureと記述しました。これで、VideoCaptureモジュールが利用できるようになります。VideCaptureは、Python Imaging Libraryが必要なので、こちらもインストールしておく必要があります。

Latitude10で、Device番号0が外側カメラでした。解像度448x252pixelで取得できましたが、640x480は設定できませんでした。実際に試してみると、448x252pixelという解像度でも、ポメラの連結QRコードを読み込んでくれました。これで、Latitude10もまたひとつ便利になりました。







0 件のコメント: