SiioLaboratory

OpenCV 2.2 を Mac OS X 10.6.5 Snow Leopard にインストールする

インストール先環境の説明

本日(2010年12月19日)時点での最新版の環境. インストールしたマシンはMac Bok Air 11.6インチ.xcodeは3.2.5

http://siio.jp/gyazo/219394bc2a3cb2387fc62b5d5e5060e2.png http://gyazo.com/2c19e1dc7f9761555edd694ad47ce3d1.png

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)

macportsでインストール

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のカメラが動作して,顔検出をしてくれる.

http://siio.jp/gyazo/b7bb1a2fd7fcea4885e356345f5be0cc.png

OpenCV 2.2 をXcodeでプログラムする

Xcodeを起動する

起動して,新規プロジェクトを選択.

http://siio.jp/gyazo/3b9dca78f62e82d055745ce3d03d5115.png

Comand Line Tool を選ぶ.

http://siio.jp/gyazo/853b321f101a07c0cfbe49f2a0c293f0.png

とりあえず.main.cに簡単なプログラムを入力する.

にある,カメラ画像をキャプチャする簡単なプログラムを入力してみる.

http://siio.jp/gyazo/e5050d95a226fa53fef9d6c8ce37df1b.png

これを「ビルドと実行」してコンパイルするとエラーだらけ.

http://siio.jp/gyazo/be3092752bd7c6242a9e85e52679e229.png

ヘッダファイルとダイナミックライブラリを設定

メニューバーの「プロジェクト」,「アクティブターゲットxxxxxxを編集」を選ぶ. このなかのダイアログから,「ビルド」タブを選ぶ. このなかの,「ヘッダ探索パス」に/opt/local/include/**を加える.

http://siio.jp/gyazo/b66de55a1c5761d66800d62c762127c1.png

これで,「ビルドと実行」を行うと,コンパイルでのエラーはなくなる. が,実行のときにライブラリが無くてエラーが出る. そこで,ダイナミックライブラリを追加するために グループを追加する.名前はとりあえずDynamicLib?くらいにしておく.

http://gyazo.com/19655580b09201f9b66e34d2e86d7173.png

これに,/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://siio.jp/gyazo/002e20387e25b13eb77832789cf19c34.png

これで「ビルドと実行」を選ぶとコンパイルして実行できる.

おまけ1:Open CV 2.2をWindows7にインストールする方法

  • Open CV 2.2をインストール

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2/OpenCV-2.2.0-win32-vs2010.exe/download

からダウンロード。実行してインストール。

  • Visual Studio 2010をインストール

http://msdn51.e-academy.com/elms/Storefront/Home.aspx?campus=ocha_isc

からログインしてVisual Studio 2010を取得(本学科学生限定)。

  • カメラを動かしてみる

にある,カメラ画像をキャプチャする簡単なプログラムを入力してみる.

  • プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに『C:\OpenCV2.2\include』を追加のこと

#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

おまけ2:Windows 7でHD解像度のUSB webcamを使う方法

その1

http://twitter.com/yoggy さんから教えていただきました。ありがとうございました。 Video Input Libraryというのを使う方法です。

https://gist.github.com/787779 に書いてある方法です。

  • https://gist.github.com/787779のページのソースコードを入手する。
  • videoInput.libとvideoInput.hを探す
    • 上記のようにOpen CVをインストールしてあれば、c:\OpenCV2.2\3rdparty\libとc:\OpenCV2.2\3rdparty\includeにあります
    • 無い場合はhttp://www.muonics.net/school/spring05/videoInput/ からlibとhを取り寄せる。それをc:\OpenCV2.2\3rdparty\libと c:\OpenCV2.2\3rdparty\includeに置く。(他でも良いけど)
  • ソースコートの#pragma comment(lib, xxxx)の場所を実際のlibのある場所に修正する。
    • たとえば #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_core220d.lib") とか
    • たとえば #pragma comment(lib,"C:\\OpenCV2.2\\3rrdparty\\lib\\videoInput.lib") とか
  • videoInput.hへのパスを登録しておく
    • プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに例えば『C:\OpenCV2.2\3rdparty\include』を追加

その2

http://twitter.com/dandelion1124 さんからも、 Opencvのソースを変更してVideo Input Libraryを使う方法を教えてもらいました。

  1. Windows SDKをインストールする
  2. Open CV2.2にhttp://bit.ly/dTolrvの修正を行う
  3. CMakeでWITH_VIDEOINPUTを有効にしてビルドする
  4. cv Create Camera Captureの引数をCV_CAP_DSHOWに指定する
  5. cv Set Capture Property関数でキャプチャサイズ(幅,高さ)やFPSが変更できる

おまけ3:Open CV で使える安価なfull HD解像度USBカメラ

Logicool (Logitech) C910 を使ってみる

webcam-c910-glamour.png

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を使う方法」のような方法が必要。

Microsoft Lifecam Studioを使ってみる

http://www.microsoft.com/japan/hardware/lifecam/images/wc_studio_img.jpg

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画素を縮小したものである。

screenS.jpg

オリジナル画像はこれ

http://lab.siio.jp/index.php?plugin=attach&pcmd=open&file=screenL.png&refer=How2OpenCVMacOSX]]

下部には、従来のカメラで標準的なネジ穴も付いているので、 通常のカメラを固定する三脚などを活用出来る。 という素晴らしいwebカメラなのであるが、 Windows 7で試すと、OpencvではVGA解像度含めて使えない。

Windows 7でHD解像度で使うためには、上の「Windows 7でHD解像度のUSB webcamを使う方法」のような方法が必要。

ELECOM UCAM-DLY300TA

http://gyazo.com/cf17392e21887c62f54fb4023a820211.png

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

http://gyazo.com/ed3996b179b090fe010010609f15fbd3.png

これは上記の「Windows 7でHD解像度のUSB webcamを使う方法 その1」のプログラムを使ったもの。 full HDで指定したときの、画面左端の部分。

Logicoolはナチュラルな階調、MSはコントラスト高めな設定。 ELECOMはアスペクトレシオがおかしいので、 full HD解像度で動いていなくて、それで画質が悪いと思われる。


*1 2011年1月に、Mac OS Xにも対応し、Windowsと同様に、動画静止画撮影ソフトと、テレビ電話ソフトが配布された。しかし、Windows版ソフトにある、アンチフリッカー周波数切替え、マニュアルフォーカス、マニュアル輝度、顔追跡などの設定機能がない。Windows版では、これらの設定がOpen CVなどでも使えた。なのでMac OS Xでは、Logicoolのソフトをインストールする意味は無い。

添付ファイル: filewebcam-c910-glamour.png 2599件 [詳細] filescreenS.jpg 2383件 [詳細] filescreenL.png 1509件 [詳細] filescreenS.png 1306件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-04-25 (水) 16:54:28 (2036d)