OpenNIでプログラミング
OpenNIのインストールが終わって、サンプルも動いたら、やっとプログラムが作れるようになります。
何だかんだで、私は一番ここに手惑いました。
う~む一日かけてやっとmakeの使い方がわかってきたような気がするけど…
— とーくん (@KTokunn) May 17, 2014
copy-redist:ってなんじゃらほい?
OpenNIで最初のプログラミング
① プログラムを用意する
今回は「OpenNI 3Dセンサープログラミング」という本を使って行いました。
本を見ながら打つのもありですが、今回はサンプルコードを以下のサイトからダウンロードてきました。
https://github.com/OpenNI2-Book/openni2book
ダウンロードしてきたフォルダを解凍して、
openni2book-master/02/OpenNI2/01_ColorStream/01_ColorStream/main.cppを作業用のフォルダに移動します。
今回は作業用フォルダは~/Dropbox/kinect/program/ColorStream/とします。
cp -a main.cpp ~/Dropbox/kinect/program/ColorStream/
② Makefileなどを用意する。
OpenNIのサンプルフォルダから必要そうなものを取ってきます。
詳しくわからないので、取ってきているものはテキトーです。(もしかしたらいらないものがあるかも)
前回の通りにインストールした場合は、サンプルフォルダは~/Xtion/OpenNI2/Samplesです。
このフォルダ内から次の7つのものをコピーしてきます。
CommonCppMakefile
CommonDefs.mak
CommoTargets.mak
OniSampleUtilities.h
Platform.Arm
Platform.x64
Platform.x86
これらをさきほどのmain.cppをコピーしたフォルダにコピーします。
cp ファイル名 ~/Dropbox/kinect/program/ColorStream/ cd ~/Dropbox/kinect/program/ColorStream/
次に、Makefileを作成します。
次の内容をMakefileというファイル名で保存してください。
include CommonDefs.mak BIN_DIR = Bin SRC_FILES = *.cpp ifeq ("$(OSTYPE)","Darwin") CFLAGS += -DMACOS LDFLAGS += -framework OpenGL -framework GLUT else CFLAGS += -DUNIX -DGLX_GLXEXT_LEGACY USED_LIBS += glut GL endif USED_LIBS += OpenNI2 opencv_core opencv_highgui opencv_imgproc EXE_NAME = ColorStream CFLAGS += -Wall INC_DIRS += $(OPENNI2_INCLUDE) include CommonCppMakefile .PHONY: copy-redist copy-redist: cp -R $(OPENNI2_REDIST)/* $(OUT_DIR) $(OUTPUT_FILE): copy-redist
③ OpenCVのインストール 今回のプログラムではopencvを使うのでインストールします。
sudo apt-get install libcv-dev libcv2.3 \ libopencv-highgui-dev \ libopencv-highgui2.3 \ libopencv-contrib-dev
④ ビルドの実行
準備ができたので実行します。
make
実行しますと、Binというフォルダが生成されます。
そのフォルダの中のBin/x64-Release/ColorStreamが実行ファイルです。
cd Bin/x64-Release/ ./ColorStream
実行出来ましたでしょうか?
他のプログラムの作り方
先程作成したもののmain.cppを差し替えることで、他のプログラムを作ることができます。
プログラムをmain.cppという名前で保存してmakeを実行してください。
MakefileのEXE_NAME = ColorStreamの部分を書き換えることで実行ファイルの名前を変えることができます。
何かありましたら、Twitterなどでご質問ください。お待ちしています。
@KTokunn
いろんな本を買いたいけど、お金がない
— とーくん (@KTokunn) May 18, 2014