私のクラスの学生演習でMultitouch Mini (MTmini)を作ってもらおうと準備しています。前期はこれで感覚をつかんでもらって、後期は大きめのマルチタッチスクリーンを作ってもらおうかいな、と。
MTminiではTouchlibを利用しているようなのですが、それだとあっという間に終わってしまいます。せっかくなので画像処理もあわせて経験してもらうためOpenCVを使ってもらおうかと。学生君はJavaを勉強してきていますので、Processing+OpenCVライブラリを利用するのが妥当と思われます。
で、マイPC(macbook air)でiSightを使って「うんうんできるなぁ」と確認できたものの、MTminiでは構成上、USBカメラを利用する必要があり。。。数日前から試行錯誤しておりました。
OpenCVのドキュメント(下図)にはカメラ番号を指定すると使用するカメラを選択できる。。。と書かれているのですが、うまくいかない。そもそも何番で指定するべきなのか定義ファイルを探すこともできません.
このライブラリで2つのカメラを同時に利用する方法も議論されているようですが未確認です。
1つめのカメラとしてiSightが認識されてしまうので、これを無効化してしまえばUSBカメラを認識するんじゃないかな。。。と思ったわけです。
で、iSight Disabler 3, Leopard Support を利用させてもらいます。
上記リンクからスクリプトをDLしてダブルクリック&実行すると、下図のように"Enable iSight"と"Disable iSight"の2つのボタンが表示されます。ここで"Disable iSight"を選択して管理者パスワードを入力すればiSightを無効化できます。
で、前置きが長くなりましたが、これでUSBカメラを1つ目のカメラとして認識させることができるようです。
Processing+OpenCVのサンプルプログラムで利用できることを確認しました。以下はopencv_absDiffというデモプロの1つです。使用したUSBカメラが赤外フィルタを除去したものだったため色がおかしいですが。。。動作することは確認できました。