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 ...
Did you managed to run main_dot3D?
回覆刪除[版主回覆05/13/2011 01:37:03]Yes, main_dot3D also works
Hello, I tried a few days ago and found that the ESM library is not directly compatible with opencv programs because it's a C library and opencv produces C++ executables. Therefore it is mandatory to add the following in cv_esm.h: extern "C" { #include "EMSlibry.h" } thank you for your guide
回覆刪除