2010年11月17日 星期三

Real-Time Object Detection by Stefan Hintersser running on linux Intel X86

Computer Version is an interesting topic, I found an implementation of real-time object detection which is really work on my linux X86.

Stefan Hintersser home page
http://campar.in.tum.de/Main/StefanHinterstoisser

Document
http://campar.in.tum.de/personal/hinterst/index/project/CVPR10.pdf

Although the author says it can work on linux but not really tested.
Now, let's do some fix to get it work.

1.Download and install source code and all necessary libraries

Source code
http://campar.in.tum.de/personal/hinterst/index/downloads.html

OpenCV

ESM
ftp://ftp-sop.inria.fr/evolution/malis/software/ESM/ESMkitLin_0_4.tar.gz
Install in
$DOT_vs_1.0/resources/ESM/ESMkitLin

Intel IPP
I'm running with Intel IPP 6.0.1.071. it installed in /opt

1.Create Makefile

CC=gcc
AR=ar

CFLAGS=-Wall -O3 -funroll-loops -msse2 -I./include -I/usr/include/opencv -I/opt/intel/ipp/6.0.1.071/ia32/include -I./resources/ESM/ESMkitLin/inc
LDFLAGS=-L/opt/intel/ipp/6.0.1.071/ia32/lib -lcv -lcvaux -lhighgui -lcxcore -lippcvmerged -lippmemerged -lippmmerged -lippccmerged -lipprmerged -lippiemerged -lippimerged -lippsemerged -lippsmerged -lippsrmerged -lippcore -lm

LIBS=src/cv_camera.o src/cv_utilities.o src/cv_esm.o

%.o : %.cc
        $(CC) -c $(CFLAGS) $< -o $@

all : main_dot2D main_dot3D

main_dot2D : ${LIBS} src/main_dot2D.o
        ${CC} -o $@ ${LIBS} src/main_dot2D.o ${LDFLAGS} resources/ESM/ESMkitLin/lib/ESMlib.a

main_dot3D : ${LIBS} src/main_dot3D.o
        ${CC} -o $@ ${LIBS} src/main_dot3D.o ${LDFLAGS} resources/ESM/ESMkitLin/lib/ESMlib.a

clean :
        rm -rf src/*.o

2.Then make.
After successful compile and link
run ./main_dot2D

The program almost eating all CPU resource and window shows nothing.
I found the camera frame rate seems too high (90 fps !!!)
So I try to reduce the frame rate by change

        int l_key = cvWaitKey(1);

to

        int l_key = cvWaitKey(60);

Now it's worked ...