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となり、若干高速化されていることがわかります。