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 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
//
// 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;
}

  • Marco
    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?
  • tommychheng
    can you include a more verbose error message?
  • Henry
    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
  • Andy
    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.
blog comments powered by Disqus