Windows Development Setup

Editors

  • VIM: The original and most efficient text editor. It provides code syntax highlighting for most languages.
  • C/C++ Development

    Download the following to develop C++ programs on Windows:
  • 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.
  • Setup

    The latest version can be checked on the respective website.

    Download and install MinGW 5.1.3. Select the G++ and other compilers. Do NOT install the make in the MinGW setup. Msys will provide it.

    Install Msys 1.0.10.

    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.

    Now you are setup to compile C++ programs!

    Computer Vision/Image processing libraries in C/C++

  • OpenCV: This is the old-school C/C++ computer vision/image processing library. It is robust and contains many functions described in computer vision textbooks.
  • Nasa Vision WorkBench
  • OpenCV

    Download and install OpenCV.

    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 with the headers:

    ////////////////////////////////////////////////////////////////////////
    //
    // 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 <image-file-name>\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<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
    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;
    }