本日(2010年12月19日)時点での最新版の環境. インストールしたマシンはMac Bok Air 11.6インチ.xcodeは3.2.5
ccのバージョンは,以下.
$ cc -v Using built-in specs. Target: i686-apple-darwin10 Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1 Thread model: posix gcc version 4.2.1 (Apple Inc. build 5664)
cmakeでインストールする方法と,macports使う方法の2種類があるらしい. ここでは
を参考にして, macport使ってみた. macportsは,こちら.
念のために,macportsとそのデータベースを最新版にしておく.
$ sudo port selfupdate
インストールは,コマンド一発.結構時間がかかるけどエラー無しで成功.
$ sudo port install opencv
サンプルは,
/opt/local/share/opencv/samples/
以下に入っている.試しに,
/opt/local/share/opencv/samples/c/build_all.sh /opt/local/share/opencv/samples/c/facetest.cpp
をどこかにコピーする.コンパイルは,
$ ./build_all.sh
で行える.そして,
/opt/local/share/opencv/samples/c/facedetect.cmd
のメモ書きに従って,
$ ./facedetect --cascade="/opt/local/share/opencv/haarcascades/haarcascade_frontalface_default.xml"
と実行すると,Mac Book Airのカメラが動作して,顔検出をしてくれる.
起動して,新規プロジェクトを選択.
Comand Line Tool を選ぶ.
とりあえず.main.cに簡単なプログラムを入力する.
にある,カメラ画像をキャプチャする簡単なプログラムを入力してみる.
これを「ビルドと実行」してコンパイルするとエラーだらけ.
メニューバーの「プロジェクト」,「アクティブターゲットxxxxxxを編集」を選ぶ. このなかのダイアログから,「ビルド」タブを選ぶ. このなかの,「ヘッダ探索パス」に/opt/local/include/**を加える.
これで,「ビルドと実行」を行うと,コンパイルでのエラーはなくなる. が,実行のときにライブラリが無くてエラーが出る. そこで,ダイナミックライブラリを追加するために グループを追加する.名前はとりあえずDynamicLibくらいにしておく.
これに,/opt/local/lib/から,
/opt/local/lib/libopencv_core.2.2.0.dylib /opt/local/lib/libopencv_highgui.2.2.0.dylib /opt/local/lib/libopencv_imgproc.2.2.0.dylib
を追加する.(もしかしたら将来他も追加する必要があるかも)
これで「ビルドと実行」を選ぶとコンパイルして実行できる.
からダウンロード。実行してインストール。
http://msdn51.e-academy.com/elms/Storefront/Home.aspx?campus=ocha_isc
からログインしてVisual Studio 2010を取得(本学科学生限定)。
にある,カメラ画像をキャプチャする簡単なプログラムを入力してみる.
#includeや#pragma commentは以下のようにする
#include "opencv2\\opencv.hpp" #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_core220d.lib") #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_imgproc220d.lib") #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_highgui220d.lib") #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_objdetect220d.lib") //以下、必要に応じて追加 //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_ml220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_features2d220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_video220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_calib3d220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_flann220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_contrib220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_legacy220d.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_gpu220d.lib") #else //Releaseモードの場合 #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_core220.lib") #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_imgproc220.lib") #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_highgui220.lib") #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_objdetect220.lib") //以下、必要に応じて追加 //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_ml220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_features2d220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_video220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_calib3d220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_flann220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_contrib220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_legacy220.lib") //#pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_gpu220.lib") #endif
http://twitter.com/yoggy さんから教えていただきました。ありがとうございました。 Video Input Libraryというのを使う方法です。
https://gist.github.com/787779 に書いてある方法です。
http://twitter.com/dandelion1124 さんからも、 Opencvのソースを変更してVideo Input Libraryを使う方法を教えてもらいました。
http://www.logitech.com/ja-jp/webcam-communications/webcams/devices/6816
このカメラは,Windowsにだけ対応している *1 . しかし,Mac OS Xのマシンに接続すると,UVC (USB Video Class) 対応のデバイスとして機能するので, Macのアプリケーションから使うことが可能である. また,上記のOpen CVのプログラムからも使うことが可能である.
このカメラは,現在販売されている安価なUSB Webカメラの中で, 唯一,フルHD対応,つまり1920x1080画素の動画が撮影できる製品である. 上記のプログラムで,縦横の画素数を変えると, 取得できる動画のサイズを変更できる. ただ,1920x1080画素を指定しても,アスペクト比が1:1にならず横長に潰れた 画像しか得られない. 検索したところ,以下の画素数で,アスペクト比1:1の画像が得られるようである. 1792 x 1008画素は,かなりHDに近いので使えるかも.
1792 x 1008 1296 x 729 864 x 486
以下を参考:
ところが,このカメラ, 対応しているはずのWindowsで,Open CV 2.2を使って試したところ, 画像サイズの変更が効かない. 640x480画素以外の設定ができない.
Windows 7でHD解像度で使うためには、上の「Windows 7でHD解像度のUSB webcamを使う方法」のような方法が必要。
http://www.microsoft.com/japan/hardware/lifecam/studio.mspx
2011年1月28日に発売されたばかりのFull HDのwebカメラである。 上記のC910と同様に、Mac OS Xに接続するとUVCカメラとして動作する。 さらに、C910より素晴らしいことに、Mac OS XのOpencvでfull HD解像度で動作する。 1920x1080も1280x720も正しく出る。 ちなみに、次の例は、1280x720画素を縮小したものである。
オリジナル画像はこれ
下部には、従来のカメラで標準的なネジ穴も付いているので、 通常のカメラを固定する三脚などを活用出来る。 という素晴らしいwebカメラなのであるが、 Windows 7で試すと、OpencvではVGA解像度含めて使えない。
Windows 7でHD解像度で使うためには、上の「Windows 7でHD解像度のUSB webcamを使う方法」のような方法が必要。
http://www2.elecom.co.jp/multimedia/pc-camera/ucam-dly300ta/index.asp
これも300万画素full HDのUSB webカメラ。
Mac OS Xから使うと、 Logicool (Logitech) C910の時のようにアスペクトレシオがおかしい。(横につぶれる) C910のように、使える解像度が決まっているのかもしれない。
Windows 7でも、他のカメラと同様に、上の「Windows 7でHD解像度のUSB webcamを使う方法」で表示できるが、やはりアスペクトレシオがおかしい(横につぶれる)。これも使える解像度が決まっているのかもしれない。
左から、Logicool C910, Microsoft Lifecam Studio, ELECOM UCAM-DLY300TA
これは上記の「Windows 7でHD解像度のUSB webcamを使う方法 その1」のプログラムを使ったもの。 full HDで指定したときの、画面左端の部分。
Logicoolはナチュラルな階調、MSはコントラスト高めな設定。 ELECOMはアスペクトレシオがおかしいので、 full HD解像度で動いていなくて、それで画質が悪いと思われる。