月別アーカイブ: 2011年12月

MacでOpenCV

OpenCVを使おうとportsでインストールするとエラーで駄目でした。
svnでソースを取得してccmakeでエラーになるTESTを無効にすると
インストールできました。sampleやネット上のソースなどコンパイルしてみると
動いているようです。PS2のeyeToyもキャプチャ出来ていました。
[~/src/opencv]./cap
USB Library Version = 3.4.9
USB Family Version = 3.5.2
USB Interface ID = 352
2011-12-04 23:21:25.046 cap[52042:807] The Manufacturer ID bytes match OmniVision.
2011-12-04 23:21:25.059 cap[52042:807] The sensor appears to be in the OV76xx series (48).
alt interface 0:
pipe 0: ANY 0 CONTROL 8 0
pipe 1: IN 1 ISOC 0 1
ターミナルに出るメッセージは上のようになり、キャプチャ画面の表示ウインドウが表示されます。
ところが何かキー入力で終了するはずができません。
単純にmainで
cvWaitKey(0);
exit(0);
のみしてもキー入力がターミナルに表示されるだけで終了しません。
cvWaitKeyの引数を正の値にすればキー入力に関係なく終了します。
ネットで検索してもcvWaitKeyの戻り値と0xffで論理積をとるなどで
該当するものはみつかりませんでした、
キー入力がターミナルのみで実行しているプログラムにわたっていないようです。
control+Cで終了できますが、入力で機能を選択するプログラムが意図通り動きません。
cvWaitKeyの実装は
modules/highgui/src/window_cocoa.mm
になるんですね。

12/6追記
samples/MacOSX/FaceTracker
をネット見つけた”Framework無しにFaceTrackerをビルドする”でビルドすると
問題無くキー入力を受け付けて終了出来ました。
(リンクするライブラリと、xmlファイルを読み込む部分を絶対パスに変更しました。)
しかし
samples/MacOSX/FaceTracker/build/Release/FaceTracker.app/Contents/MacOS
のFaceTrackerをターミナルから起動するとキー入力を受け付けません。
ターミナルの出力先があるとそちらにキー入力が行き、アプリで処理出来ない様です。
実行しているのは同じファイルのはずなので、Mac用の実行形式の情報を必要としているようです。

試してる環境は
opencv 2.3.2 svn:7044M
MacMini PPC OS:10.5.8
です。