Qt @福岡 第6回勉強会 で発表してきました
Qt勉強会 第6回福岡で「Qtでシリアル通信」って内容で話させて頂きました。人数は多くありませんでしたが、とても濃い話や面白いアプリケーションを見ることができて楽しかったです。来年度から就職して東京の方へ行くので、福岡の勉強会はこれが最後かなーとしみじみ。
キュートにQt vol 5.
トップバッターのゆーちさん。前回の勉強会でライブコーディングで作ったgoogle mapアプリケーションに、GPSセンサーを付けて現在地を表示するという内容でした。室内なので、USB接続のGPSセンサーからのデータをファイルに保存しておき、そこからデータを取得してgoogle map上に表示するというものでしたが、実際に動いているところを見るのは楽しいですね。GPSセンサーとのシリアル通信に苦労したとのことなので自分の発表が参考になってれば幸いです。
Qtでシリアル通信
自分の発表です。Qtでシリアル通信を使いたいことがあったので、まとめの要領で発表しました。Qt用のライブラリとしてQSerialDeviceとQextSerialPortがありますが、QextSerialPortが話の主な内容になっています。QSerialDeviceはGPLライセンスで、QextSerialPortは修正BSDライセンスだったのでそちらのほうが使いやすいかと。発表の中ではWindowsをメインにしてましたが、ほぼ同じ要領でMacOSX(10.6)でも動きますし、発表はMacbook Airで実演しました。ホントはこの発表用にxbee使った簡単なDemoを作っていたのですが、実装が間に合わずちょっと残念でした。せっかくなのでこのblogのほうで紹介していきたいと思います。あと、QextSerialPortの使い方についてもWindowsとMacの両方についてblogでまとめます。できればLinuxも。
今回の発表スライドをおいておきます。qtfk6.pdf
BeagleboardでQtを動かせます的なものが出来たらいいなぁという感じ
すげーの一言。tomozhさんがいろいろ調べてBeagleboardでQt/Embeddedを動かしてました。発表を聞くといろいろな苦労が垣間見れて・・・。プロジェクターに映すためにわざわざHDMI→VGA変換の装置を用意し、一部実演しながらの発表でした。丁寧に使い方を説明されてたので、とてもわかりやすかったです。最後に自作のシューティングゲーム?を動かしているのを見たときはすごいとしか言えなかった。結構グラフィックきれいだし、玉も多いのに60fps以上で動作してるのにはびっくりした。現状ではUSBのマウスやキーボードが使えないというバグが有るらしいので、今後に期待したい。
Qtで作った沖縄三線の楽譜エディタ
funattiさんの発表で、卒論でQtを使った話。沖縄三線の話も面白かったけど、その三線用のエディタがすごかった。縦書きの楽譜をQtで簡単にできたーと言っていたけれど、機能がしっかりしているし、よく1ヶ月?で作ったなーという感じ。githubにソースコードが公開されてるみたいなので後で見てみたいです。
QtRuby – キュートに Ruby でGUI -
最後に津田さんの発表でRubyでQtをどのように使うかについて簡単にまとめられていました。Ruby自体扱ったことはないんですが、Qtの使い方はC++とほぼ同じなので、構文はともかくどのように動作するのかソースコードみればだいたい予想がつきました。SliderとSpinBoxの話(2つのRangeが異なる場合にどうなるか)が面白く、普段気づかないだけに考えさせられました。
総評
勉強会って面白い。今回発表で出た内容をできれば実際に自分で動かしたいですね。懇親会でもいろんな方と話せて楽しかったです。福岡のQt勉強会に参加するのは今回が最後になりそうですが、福岡は楽し方が多いので関東に出るのはちょっと残念です。今後は関東の勉強会に参加できたらなーと。
N9の日本語環境を整える
しばらく素のままで使っていたけどN9の最大の問題点が日本語入力ができないところ。デバイス自体が英語表記なのは別にいいけれど、日本語入力ができないとメールも打てないしtwitterもできないのでいろいろ困る。あと中文フォント微妙やし文字化けするとこあるし。てなわけで日本語フォントと日本語入力のインストールを行う。
Nokia Accountの取得
初Nokia端末なのでNokiaのアカウントを作成する。こっちのサイトからできるしN9端末から登録することが出来る(はず。https://account.nokia.com/acct/register?serviceId=NokiaAccount&withUsername=true
取得したいアカウント名を入力して、パスワード、生年月日などを入力する。PCから取得した場合にはN9のAccountsからAdd accountsで登録したNokiaアカウントを入力する。
日本語フォントの導入
N9はデフォルトで日本語も表示してくれるが、中文フォントっぽく、たまに見にくいことがあるので日本語フォントを入れる。いろいろ調べていたら@task_jpさんから簡易インストーラをもらったので簡単に導入することが出来ました。ファイルは直接もらったのでURLなどはわからないので、欲しい方は直接連絡取ってもらうと良いと思います。
もらったインストーラを実行するにはNokia Storeから取ってきたアプリではないのでN9のSettings->Applications->Installations->Allow installations from non-Store sourcesのチェックを入れる必要がある。もらった簡易インストーラをN9で直接ダウンロードして(もしくはPCでダウンロードして適当に放り込んでおく)Storeからファイルマネージャをインストールして(自分の場合 File Manager betaをインストール)、ファイルマネージャから簡易インストーラを選択するとインストールが開始される。
左がファイルマネージャの起動画面。パソコンに接続したときはMyDocs以下が見える。右はインストール後の画面。新しくMigu 1Pができているのがわかる。このアプリを起動してインストールすれば日本語フォントが本体にインストールされるので、あとは本体を再起動させれば反映される。webサイトなどを見て変わったのが確認できればOK!
日本語入力のインストール
つづいて日本語入力を構築する。まず最初に漢字変換エンジンのインストールからだが、やり方は日本語フォント導入と同じ。パッケージはmaliit-plugin-jpのdownloadからanthy_1.0.0_armel.debというのをダウンロードしてファイルマネージャから選択してインストール。・・・これで出来ると思ったけど途中でエラーがでた。なんで〜??何度トライしてもターミナルからコマンドでインストールしようとしてもエラー。むむむ・・・。
半ば諦め気味にフリック入力のアプリケーションをインストール。こちらはNokiaストアからInput Method for Japaneseを選択。Japaneseとかで検索かければ一発で出てきます。インストールして再起動。そして以下の箇所を変更。
- Settings->Time and language->Text inputへ移動
- Installed input methods (2) -> Japaneseを選択 -> Done
- Active input method -> Japaneseを選択
すると日本語入力できた!漢字変換エンジンのインストールエラーは何だったんだろう?多少不安が残るけどとりあえずよしとしますか。
ちなにみインストールすると左の画面のように辞書登録アプリが見えるようになり、右の画面のように「+」で追加していく。これでだいたい終わりかなー。またしばらくこれで使ってみるか。しかし、さまざまな人達のお陰で簡単に日本語入力環境が構築できることに感謝しなければ。
N9がやってきた。開封の儀!
1shopmobildeで注文していたNokia N9が今日届いた。18日の夜に注文していたから5日で届いたことになるのか。実際は昨日不在票があったので4日ということに。国際郵便でもこんなに早いんやねー。
ちなみに今回かかった費用は
- 本体代金+送料 ¥42,072
- 消費税 ¥1,100
- 通関料 ¥200
合計 ¥43,372 ! 円高と値下げのおかげで当初の予定よりかなり安く出来て大満足。
開封の儀
気を取りなおして早速開けましょう。箱自体は最近の流行り?なのか非常にシンプルです。ちなみにコンセントプラグを日本の規格に変えるアダプタがついてました。内容物は以下のとおりです。
- N9本体
- シリコンカバー
- 説明書、保証書
- 電源アダプタ
- USBケーブル microB
- イヤホンマイク
最初からシリコンカバーがついてのか・・・。カバーも頼んだけどいらなかったかなーと思いつつ、まだ来てないのでそれまでのつなぎとして使おうかな。装着感がすばらしく、パッと見た感じカバーつけてるかわかりません。すばらしい。
起動とOTAアップデート
開封したらN9を起動!初めて使うデバイスの電源を入れるときってものすごくドキドキする。新しものに触れるワクワク感と入手したという実感が得られますからね。そして、起動して適当に操作しつつSwipeUIに触れてみるとその操作性に引き込まれる。評判は聞いていたけどこれはヤバイ。いま持ってるipod touchより操作が気持ちいい。いや、これ純粋にすごいと思う。まぁ個人的にいくつか不満な点はあるけれどずっと使いたくなる操作であることはまちがいない。
英語に四苦八苦しつつWifiの設定やらMailの設定してたらOTAによるバージョンアップの通知が来たので、電源つなげてアップデート開始。1時間程度で終了。本格的に使用する前にアップデートしたので正直どこが変わったかわからないが、まぁ良くなったのだろう。
とりあえず今日のところはこのくらいにして、今後日本語環境を整えていきたいと思います。
セルフクリスマスプレゼント第一弾! Nokia N9をポチった。
12月頭にNokia N9を購入するつもりでいたけれど、なんとなくズレこんで今日注文した。どこで買おうか迷ったけれど1shopmobileで購入することに決定。一番安かったからという理由だが、送料込みで$530はかなり安いし円高だから4万円ちょっとになるので価格的には大満足。発売されてある程度時間が立ったので価格は落ち着いてきてるみたいだな。しかし、今回初めてGoogle Checkoutをandroid以外で使ったけれどこれは便利やね。何も入力することなしに買えちゃう。ある意味怖い。
ちなみに購入したのは16GのBlack。Blueと最後まで悩んで、いろんなカバーに合いそうなBlackの方を選びました。電脳中心買物隊にあるNokia N9ボディーカバー 5色セットも購入する予定です。いやーあとはN9が届くまでワクワクしながら待ちますか。
あ、タイトルに第一弾と書いてあるように別に欲しいものがあるので後日買う予定です。今月は散財やー!!
第42回北九州ボードゲーム交流会
12月11に門司の赤煉瓦で行われたボードゲーム交流会に参加してきました。久しぶりに新幹線で移動したけどはやい!九州新幹線が開通したときに2枚切符が事実上値上げされたので、博多〜小倉を新幹線で移動しても400円しか値段が変わらない。なので移動時間を考えると全然お得な感じになってしまった。今回は早々に帰ったので2種類しかできませんでしたけど新しいゲームをするのって楽しですね。
KINGDOM BUILDER
キングダムビルダー。ルールは非常に単純。毎ターンカードをプレイしてそのカードに書かれているエリアに自分の建物コマを3つ置くだけ!ただし条件があって、すでに建てられている場所に隣接するエリアに建物を置くことが出来るならそこから置かなければならない。なので、意外と建てられる範囲は狭くなる。さらにプレイするカードは一枚しか持ってないので必然的に置く場所は限られる。ルール基本これだけで、あとは特殊な能力がちょっとあるくらい。
得点も、決まっているわけではなく、戦いのたびに変化する。たとえば「一番建物がつながっている領域について、建物一つにつき2点」とか、「水辺に隣接してる建物コマ一つにつき1点」など、一意に決まってるわけではない。2回やって2回とも勝った!このゲーム大好きや。
ダークミニオンズ
オレニダイスウンヲモトメルトハ。それぞれのプレーヤーが悪のお頭になって街を攻め落とすというゲーム。ダイスを振って出た目のぶん街に部下を送り込んだり、強力なカードを確保したり、降るダイスを強くしたりできる。ちょっとインストに時間がかかったけどルールはそれほど難しくない。しかし、ダイス運とタイミングが悪かった。結局最下位で終了。むーもう一度挑戦したいぞ。
まとめ
久しぶりにボードゲーム交流会に参加しましたが、楽しいの一言ですね。KINGDOM BUILDERはほしいですね。お金に余裕があれば買いたいです。次回は1月8日にあるそうなのでまた参加するつもりです。
QtでOpenCVを使うために
Qtで画像処理ライブラリであるOpenCVを使う方法についてまとめる。まぁ基本的に以前のQt勉強会で言った内容を文章としてまとめるだけだが。
ちなみに今の環境は
- MacBook Air 13
- MacOSX 10.6
- Qt4.7.0
- OpenCV2.2 (macport経由でインストール)
なので、この記事を参考にする場合には気をつけてっちょ。特にOpenCVはインストールの方法やバージョンによって PATHが変わると思うんで。
PATH設定
ぶっちゃけこのPATH設定さえ出来ればOpenCVはいつもの感覚で使うことができる。WindowsのVisualStudioとかでもPATH設定すると思うのでそんな感じ。具体的には.proファイルに以下の内容を追加するだけ。
DEPENDPATH += /opt/local/include INCLUDEPATH += /opt/local/include LIBS += -L/opt/local/lib/ \ -lopencv_core \ -lopencv_imgproc \ -lopencv_highgui
インクルードのパスとライブラリを指定する命令を追加するだけでいい。これでQtでOpenCVが使える。Windowsとかでも同様にできるはず。
OpenCVで画像取得→Qtで表示
QtでOpenCVを使うというかOpenCVで取得した画像などをQtで表示するときにはまったことがある。OpenCVのデータをQt上で直接画像を表示することはできないので、一度QImageに変換して表示するようにしているんだが、OpenCVのcv::MatとQtのQImageではデータの順序が異なるので変えてやる必要がある。順序を変える命令はOpenCV、QImage双方とも提供しているのでどちらを使っても良い。
OpenCVの場合
cv::Mat src, dst; src = cv::imread("test.txt"); cv::cvtColor(src, dst, CV_RGB2BGR); //OpenCVの命令でRGBの順番を入れ替える QImage img(dst.data, dst.cols, dst.rows, QImage::Format_RGB888);
QImageの場合
cv::Mat src = cv::imread("test.txt"); QImage img(src.data, src.cols, src.rows, QImage::Format_RGB888); img = img.rgbSwapped(); //QImageの命令でRGBの順番を入れ替える
数百回繰り返した感じだとcv::cvtColor()のほうが少し早いかなーという感じ。時間があればちゃんと時間を計測してみたいところ。
OpenCVでカメラ画像取得→Qtで表示
OpenCVのカメラ画像を取得するcv::VideoCaptureを使ってカメラ画像を取得→Qtで表示させる時にはまったこと。MBAのインナーカメラをつなげたときだが、取得されたデータが32bitなので、そのままQImageに変換するとおかしな画像になった。なので、RGBの順番を変えるとともに8bit分減らす。
cv::Mat src, dst; cv::VideoCapture cap(0); cap >> src; cv::cvtColor(src, dst, CV_RGBA2BGR); //使用しているカメラは32bitだった! QImage img(dst.data, dst.cols, dst.rows, QImage::Format_RGB888);
これ最初は全く原因がわからず途中で諦めようかと何度も思った・・・。他のカメラでは試してないのですべてのカメラが当てはまるかは不明。
まとめ
導入までの方法とQtでどう出力するかを主にまとめた。特にQImageに変換するときには小細工が必要っぽいので忘れないようにしとこう。もう時間の浪費はこりごりだ。