2014年7月25日金曜日

OpenCVSharpにて、IplImageからHSV情報を取ってくる

Matに変換するとIplImageから容易にHSVの情報が取ってこれます。。



OpenCVSharpでのIplImage -> Mat 変換

OpenCVでは内部の画像フォーマットとして、従来はIplImageが主流でしたが、現在はMat形式を利用する流れになっています。で、当然、IplImageとMatへの変換についてはOpenCVSharpでも対応しており、
  • Mat mat = new Mat(srcImage);
というように、matのインスタンス生成時に IplImageを渡せば自動変換してくれます。

OpenCVSharpExtern.dllの設定に注意
Matクラスを利用するには、OpenCvSharp.CPlusPlus のパッケージを利用することになるのですが、このクラスは、OpenCVSharpExtern.dll を利用しているもよう。このdllは、参照設定では登録できないので、プロジェクトディレクトリに置かなければいけません。さらに、このファイルはプロパティにて
  • 出力ディレクトリにコピー:新しい場合はコピーする(または、常にコピーする)
という設定をしなければいけません。この設定を忘れると、上述のような変換の記述を実行すると、
  • TypeInitializationException が発生しました
というエラーが起きてしまいます。実はこのことに気づかず、Matへの変換ができなくて、何でかなーとかなり悩んでました。OpenCVのライブラリが動かなければすぐに気づいたのですが、通常の処理で問題なく実行できてましたので、まさか、初歩的な設定を忘れていたとは、、、

これで、ラボでも本格的にMatベースの記述に移行することができそうです。



Kinect for Windows v2センサー(オープンベータ)を入手しました

事実上の製品版であろうKinect2 のオープンベータを入手しました。アルファ版との外見的な違いをざっと報告。

本体は同じ
アルファ版には悪趣味なシールが貼ってある点を除いて、同じと思われます。ベータ版にはKINECTの刻印があります。おそらく、アルファ版ではネーミングが未定だったのでシールを貼っていたのだと思われます。



付属ケーブルが小型化
アルファ版では、大げさなデカイ変換器だったのですが、以下の写真のように小型化されました。



ただ、初代はこういったものがなかったわけですから、ちょっと残念なところです。初代からアダプターが増えている理由は、
  • 本体への電力供給量の増加
が一番の要因と予測できます。TOFでリアルタイムにレーザで奥行きをとるわけですから、より大きな電力が必要になったのでしょう。現状ではこれ以上の小型化は期待できないですね。

というわけで、ボチボチとうちのゼミでもKinect2に移行していきます。