You are on page 1of 6

Developing OpenCV Applications with Eclipse on ... http://tommy.chheng.com/index.php/2009/05/openc...

Tommy Chheng

All Things Programming!

Frontpage
Return home
Subscribe
RSS feed
Search the archives...

May 12, 2009

Developing OpenCV Applications with Eclipse


on Windows
Here’s a guide to start hacking computer vision and image processing
applications using OpenCV/Eclipse on Windows machines. While you can use
Microsoft Visual Studio to program OpenCV apps, I find Eclipse a much easier
to use IDE.

C++ Development Tools

MinGW: A collection of freely available and freely distributable Windows


specific header files and import libraries combined with GNU toolsets that
allow one to produce native Windows programs that do not rely on any
3rd-party C runtime DLLs. MinGW is different from Cygwin because it
uses the Windows C runtime libraries(mscvrt) rather than GNU’s libc.
Msys: A Minimal SYStem to provide POSIX/Bourne configure scripts the
ability to execute and create a Makefile used by make.
Eclipse CDT: A IDE originally made for Java but includes an extensive
plugin library. Now supports C/C++ and many other languages.

The latest version can be checked on the respective website. I used MinGW
5.1.3 and Msys 1.0.10. When installing MinGW, select the G++ and other
compilers. Do NOT install the make in the MinGW setup. Msys will provide it.

MinGW does not include the GDB debugger so download gdb-6.6.tar.bz2 and
install it to your MinGW directory. To uncompress it, open up the msys window

1 of 6 08/11/2010 11:20 AM
Developing OpenCV Applications with Eclipse on ... http://tommy.chheng.com/index.php/2009/05/openc...

and type in bunzip2 gdb-6.6.tar.bz2 and then tar -xvf gdb-6.6.tar. Copy all
the contents to your MinGw folder.

OpenCV

The two big open source computer Vision/Image processing libraries in C/C++
are OpenCV and the Nasa Vision WorkBench.

OpenCV is the old-school C/C++ computer vision/image processing library. It is


robust and contains many functions described in computer vision textbooks. I
haven’t played with the newer NASA tool but it looks like it has a decent API
as well.

Download and install OpenCV.

Linking OpenCV in Eclipse

You can setup Eclipse CDT to work with the OpenCV libraries. Create a new
C++ project in Eclipse CDT. Select MinGw as the toolchain.

In the project properties, go to the C/C++ Build->Settings->GCC C++


Compiler, set the directories to:

OpenCv\cv\include
OpenCv\cxcore\include
OpenCv\otherlibs\highgui
OpenCv\otherlibs\cvcam\include
OpenCv\cvaux\include

In the C++ Linker->Libraries, set:

cv
highgui
cxcore

In Library search path, set:

OpenCV\lib

Here’s a sample file to get you started. You should be able to compile this
program and see an inverted image when you run it.

////////////////////////////////////////////////////////////////////////
//
// hello-world.cpp

2 of 6 08/11/2010 11:20 AM
Developing OpenCV Applications with Eclipse on ... http://tommy.chheng.com/index.php/2009/05/openc...

//
// This is a simple, introductory OpenCV program. The program reads an
// image from a file, inverts it, and displays the result.
//
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>
int main(int argc, char *argv[])
{
IplImage* img = 0;
int height,width,step,channels;
uchar *data;
int i,j,k;
if(argc<2){
printf("Usage: main \n\7");
exit(0);
}
// load an image
img=cvLoadImage(argv[1]);
if(!img){
printf("Could not load image file: %s\n",argv[1]);
exit(0);
}
// get the image data
height = img->height;
width = img->width;
step = img->widthStep;
channels = img->nChannels;
data = (uchar *)img->imageData;
printf("Processing a %dx%d image with %d channels\n",height,width,channels);
// create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
// invert the image
for(i=0;i data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
// show the image
cvShowImage("mainWin", img );
// wait for a key
cvWaitKey(0);
// release the image
cvReleaseImage(&img );
return 0;
}

Category: Programming

Tagged: computer vision

3 of 6 08/11/2010 11:20 AM
Developing OpenCV Applications with Eclipse on ... http://tommy.chheng.com/index.php/2009/05/openc...

Add New Comment

Type your comment here.

Post as …

Showing 5 comments

Sort by Popular now Subscribe by email Subscribe by RSS

Marco 5 months ago

Hi,
I've followed your guide but when I try to compile I receive this error from eclipse: "binary not found"
How can I do?

Like Reply

Voices117 1 month ago

that's because you have to build (ctrl+B) the file first

if the code has any errors building will fail

Like Reply

tommychheng 5 months ago

can you include a more verbose error message?

Like Reply

Henry 1 year ago

it is not working i have problem with highgui.h, I install all newsest soft eclipse mingw and myns and
opencv
i do it like you wrote but the file is imposiible to compile without error
please help how to add highgui.h correctly

Like Reply

4 of 6 08/11/2010 11:20 AM
Developing OpenCV Applications with Eclipse on ... http://tommy.chheng.com/index.php/2009/05/openc...

Andy 1 year ago

Don't forget to also set the windows path environment to include the required OpenCV DLL's sol that the
program can be found at runtime.. From the command line, cd into the directory of your compiled
executable. Run path=%path%;C:\Program Files\OpenCV\bin (or the location of your respectove OpenCV
install.) Then run the executable.

Like Reply

Trackback URL http://disqus.com/forums/tom

blog comments powered by DISQUS

Tommy's Tweets

ouch, #southwest flight to san francisco has been delayed two hours.
@peterc last year's rubyconf was in silicon valley. local conferences make
it easy and cheap for rubyists to attend.
sms.ac or now fanbox looks like the worst consumer internet company to
work for http://bit.ly/blp7rY
re-writing the BBC News app in html5 http://bit.ly/bo8lWz
@bkudria @mikeihbe i concur with java libs for scalability, R for
prototyping ml. prefer matlab for superior matrix support but R is good

Tags

android clojure computer vision couchdb gettext hashmap hci iphone java Javascript jruby
mongodb oauth open source paypal processing rails 2.3.2 Ruby Scala solr state plane twitter wgs84

Links

Custom Search/Machine Learning Development at Quicksort Labs


Find a Grad School based on research fields at Grad School Now!
Tommy Chheng on Flickr
Tommy Chheng on Twitter

Frontpage
Return home
Browse
By topic

5 of 6 08/11/2010 11:20 AM
Developing OpenCV Applications with Eclipse on ... http://tommy.chheng.com/index.php/2009/05/openc...

Subscribe
RSS feed
Search the archives...

Grid Focus by Derek Punsalan 5thirtyone.com.

Whitespace

6 of 6 08/11/2010 11:20 AM

You might also like