Tuesday, October 28, 2008

OpenCV on Fedora 8

Our team has just spent a bit of time configuring and running openCV on our Fedora 8 boxes. openCV is a very rich toolkit for applications that have computer vision requirements. After some bouncing around between various useful web sites with different installation processes, we assembled a complete set that works for us.

This install process includes the ffmpeg libraries, and takes you from a basic Fedora 8 box to running the facedetect example.

Install ffmpeg

Do this as root.

* yum install SDL-devel
* From ffmpeg, download a full checkout.
* tar xjf ffmpeg-checkout-snapshot.tar.bz2
* cd ffmpeg-checkout-2008-10-28 (or whatever release yours is)
* ./configure --enable-shared --enable-swscale --enable-gpl
* make (You'll have time to get coffee, maybe see a movie, while this runs.)
* make install
* echo "/usr/local/lib" >/etc/ld.so.conf.d/ffmpeg.conf
* ldconfig

Now, run ffplay and pass it the name of a local video file - flv, avi, whatever.

Install OpenCV

You're still root, yes?

* yum install gtk2-devel
* Download http://downloads.sourceforge.net/opencvlibrary/opencv-1.1pre1.tar.gz
* cd /tmp
* tar xzf opencv-1.1pre1.tar.gz
* cd /usr/local/include/
* mkdir ffmpeg
* cd ffmpeg
* find ../ -name "*.h" | xargs -n1 ln -s
* cd /tmp/opencv-1.1.0/
* ./configure --enable-apps --enable-shared --with-ffmpeg --with-gnu-ld --with-x --without-quicktime CXXFLAGS=-fno-strict-aliasing CFLAGS=-I/usr/local/include/ffmpeg CPPFLAGS=-I/usr/local/include/ffmpeg LDFLAGS=-L/usr/local/lib

You should see

...
Use gtk+ 2.x: yes
Use gthread: yes
...
Use ffmpeg: yes
...

* make
* make install

Now, to verify that everything's good.

facedetect

You can do this as an ordinary user in your home directory. You'll need an avi to use, in the place of /shared/public/videos/dove_hires.avi, but I'll leave it up to you to go find one.

* mkdir face
* cd face
* rsync -a /tmp/opencv-1.1.0/samples/c/ .
* g++ facedetect.c -o facedetect -I /usr/local/include/opencv/ -L /usr/local/lib/ -lm -lcv -lhighgui -lcvaux
* ./facedetect --cascade="/tmp/opencv-1.1.0/data/haarcascades/haarcascade_frontalface_alt2.xml" /shared/public/videos/dove_hires.avi

You should see the video play, with facedetect drawing a red circle around anything it thinks is a face. Cool stuff!

No comments: