2013年8月9日金曜日

MacOS X(Mountain Lion)でOpenCVを使ったコードをコマンドラインからコンパイル

OpenCVをMacからも使ってみようということでちょっとやってみたので紹介しようかなと。

環境


  • MacOS X 10.8.4
  • MacPorts 2.2.0
  • OpenCV 2.4.6
  • gcc 4.2.1 (Based on Apple Inc. build 5658)
[追記 2013/11/03]
OS X 10.9(Mavericks)のXcode5のgccでも動作しましたが、OS X 10.8.4からのアップデートした環境です。

やり方

まず、OpenCVをインストールする必要があります。今回はMacPortsを使ってインストールしました。MacPortsを使うにはgccが必要ですので、AppStoreからXcodeをインストールして、Command Line Toolsを入れます。ちなみにLionでgccを入れててMountain Lionにアップデートした場合も再度gccを入れる必要があります。

MacPortsはいろいろググって入れます。んで

sudo port install opencv

を打って放っておくと完了すると思います(パスワード聞かれるので入力してから放置)。そして適当なディレクトリ作ってOpenCVを使ったコードを書きましょう。以下では前回紹介したtrans90.cを使ってやってみます。このままでは通らないのでちょっとソースコードを書き直します。具体的にはincludeの<>を""に書き直し、保存します。そして保存したディレクトリに移動して
gcc -I/opt/local/include  -L/opt/local/lib  trans90.c  -lm -lopencv_core -lopencv_highgui -lopencv_imgproc -o trans90
このように打てばコンパイルが通るとおもいます。 しかし、毎回コンパイルの度にこのように打っていては面倒なのでMakefileをつくってmakeを利用します。テキストエディタで
CC = gcc
CFLAGS = -I/opt/local/include
LDFLAGS = -L/opt/local/lib
LDLIBS = -lm -lopencv_core -lopencv_highgui -lopencv_imgproc
これを書いてMakefileという名前でソースコード(trans90.c)と同じディレクトリに保存します。そして
make trans90
と打てばコンパイルができると思います。Makefileは本来は分割ソースのコンパイルに力を発揮しますが、今回のような場合でも十分便利なので利用しました。

それでは今日はこのへんで。

[追記]

Homebrew 0.9.4の環境が入ったMacOS X 10.8.4でも動作の確認ができました。Homebrewの場合
CC = gcc
CFLAGS = -I/usr/local/Cellar/opencv/2.4.5/include
LDFLAGS = -L/usr/local/Cellar/opencv/2.4.5/lib
LDLIBS = -lm -lopencv_core -lopencv_highgui -lopencv_imgproc
のように赤字の部分のように書き換えることで、ソースコード(trans90.c)がコンパイル出来ました。ただしOpenCVのバージョンが2.4.5の場合です。指定するディレクトリに注意してください。

2013年8月7日水曜日

WebカメラとLRFのドッキング

今日は、つくばチャレンジ2013の課題にある
特定人物の検出」を行うための装置を作りました。

写真を見ていただければわかるかと思いますが、LRFセンサで測定物との距離を測定すると同時に、3台のWebカメラの情報を読み取ることにより、特定人物の検出を行うための装置です。

カメラは真ん中が固定、両サイドは任意角を取れる(手動)ように設計しています。

課題は、測定物の距離により、カメラの角度を変えなければならない(自動)という事です 。
これについては、プログラムがもう少し形になってから考えることにしますが、いずれ改良していかなければならない点だと考えています。
また、このカメラは写真ではすべて縦型で使用していますが、元々は横型で使うものなので視野角についても要改良であると考えています。
いずれにせよ、とにかく動くプログラムを作ってから考えようと思います。

何か動くプログラムができたら、アップしてきます。
では、今日はこのへんで ( 'A' )ノシ

2013年8月6日火曜日

OpenCVでWebカメラの映像を90度変換