OpenCV 2.4.13 と 3.1 を共存させる その2
前回からの続きです。
サンプルデザインでコンパイルできるか試してみます。
ここでは、HoGによる人検知を使ってみました。
適当に作業ディレクトリを掘り、サンプルファイルをコピーします。
mkdir ~/work_cv_test cd ~/work_cv_test cp ~/libs/opencv-2.4.13/samples/cpp/peopledetect.cpp . cp ~/libs/opencv-2.4.13/samples/gpu/road.png .
以下の通りMakefileを作成します。
$ vim Makefile
CPP = g++ CFLAGS = -O0 -Wall #CFLAGS = -O3 -Wall CFLAGS = `pkg-config --cflags opencv` LDFLAGS = `pkg-config --libs opencv` TARGET = peopledetect SRCS = peopledetect.cpp OBJS = $(SRCS:.cpp=.o) all: $(TARGET) $(TARGET) : $(OBJS) $(CPP) -o $@ $< $(LDFLAGS) 2>&1 | c++filt .cpp.o: $(CPP) -o $@ -c $< $(CFLAGS) clean: @rm -f *.o $(TARGET)
まず、2.4.13でコンパイル、実行します。
$ source setting-cv-2.4.13.sh $ make $ ./peopledetect road.png
以下のコマンドで、2.4.13のライブラリが使われていることが確認できます。
$ ldd peopledetect linux-vdso.so.1 => (0x00007fff11738000) libopencv_core.so.2.4 => ~/libs/opencv-2.4.13/release/installed/lib/libopencv_core.so.2.4 (0x00007f473d412000) ...
次に、3.1.0でコンパイルします。
$ make clean $ source setting-cv-3.1.0.sh $ make $ ./peopledetect road.png
同様に、3.1.0のライブラリが使われていることが確認できます。
$ ldd peopledetect linux-vdso.so.1 => (0x00007fff2e3fe000) libopencv_objdetect.so.3.1 => ~/libs/opencv-3.1.0/release/installed/lib/libopencv_objdetect.so.3.1 (0x00007f6a5684d000) ...
なお、検出までの時間が出力されますが、手元の環境では、2.4.13で約880ms、3.1.0で約680msとなり、若干高速化されていることがわかります。