の手慣れた写真を撮るという操作だけで済むというのが気楽です。
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 件のコメント:
コメントを投稿