Configuring NetBeans to use OpenCV in Linux Environments

A quick guide to setting up and installing OpenCV for using in the Netbeans integrated development environment in Linux.

Step 1: Download and extract OpenCV for Linux

Versions of OpenCV can be downloaded from here:

http://opencv.org/downloads.html

Save it to the location of your choice. Open a command prompt, navigate to the download location and unzip:

opencv_codeblocks1

Step 2: Create an OpenCV build directory

Navigate to the OpenCV directory, and use

mkdir

to create the build directory:

opencv_codeblocks2

Step 3: Use CMake to build OpenCV

Navigate to the ‘build’ directory created and run the following CMake command:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

opencv_codeblocks3

And then run

make

command, which can take a while to complete:

opencv_codeblocks9

Followed by the

sudo make install

command:

opencv_codeblocks10

Step 4: Create a Netbeans Project

Open the NetBeans IDE and select File > New > Project. Select Empty Project:

OpenCVNetbeans1

Click Next and give the project a name:

OpenCVNetbeans1

And press Finish.

Once the project is created, select File > New > Empty File, to add the main.cpp file to the project. Copy and paste the following code example to main.cpp:

// DetectBlobs.cpp : Defines the entry point for the console application.
//
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main()
{
    // Initialise
    //std::string filepath = "spots.bmp";
    std::string filepath = "spots2.jpg";
    int num_blobs = 0;

    // Load grayscale version of coloured input image
    IplImage* original  = cvLoadImage( filepath.c_str() );
    IplImage* grayscale = cvLoadImage( filepath.c_str(),
                                       CV_LOAD_IMAGE_GRAYSCALE );

    // Check bitmap image exists
    assert( grayscale );

    // Create IplImage struct for a black and
    // white (binary) image
    IplImage* img_bw = cvCreateImage( cvGetSize( grayscale ),
                                      IPL_DEPTH_8U,
                                      1 );

    // Use thresholding to convert grayscale image
    // into binary
    cvThreshold( grayscale,             // source image
                 img_bw,                // destination image
                 40,                    // threhold val.
                 255,                   // max. val
                 CV_THRESH_BINARY );    // binary

    // Create IplImage struct for inverted black
    // and white image
    IplImage* img_bw_inv = cvCloneImage( img_bw );
    IplImage* img_bw_cpy = cvCloneImage( img_bw );

    // Find connected components using OpenCV
    CvSeq* seq;
    CvMemStorage* storage = cvCreateMemStorage( 0 );
    cvClearMemStorage( storage );

    // cvFindContours the 12 + 1 extra object for
    // white backgrounds and black spots, hence
    // subtract 1
    num_blobs = cvFindContours( img_bw,
                                storage,
                                &seq,
                                sizeof( CvContour ),
                                CV_RETR_LIST,
                                CV_CHAIN_APPROX_NONE,
                                cvPoint( 0, 0 ) ) - 1;

    // Display the input / output windows and images
    cvNamedWindow( "original" );
    cvShowImage( "original", original );

    cvNamedWindow( "grayscale" );
    cvShowImage( "grayscale", grayscale );

    cvNamedWindow( "black_and_white" );
    cvShowImage( "black_and_white",
                  img_bw_cpy );

    // Wait for user key press and then tidy up
    cvWaitKey(0);

    cvReleaseImage( &original );
    cvReleaseImage( &grayscale );
    cvReleaseImage( &img_bw );
    cvReleaseImage( &img_bw_inv );
    cvReleaseImage( &img_bw_cpy );

    cvDestroyWindow( "greyscale" );
    cvDestroyWindow( "black_and_white" );
    cvDestroyWindow( "inverted" );

    return 0;
}

Step 5: Configure project settings

Right click the project folder and select Properties.

Select C++ Compiler > Include Directories. Set this to “../../opencv-2.4.9/include/”

OpenCVNetbeans3

Then select Linker > Additional Library Directories to set the location of the OpenCV libraries, in the build/lib folder that was created using CMake earlier:

OpenCVNetbeans4

Select Linker > Libraries > Add Library. Set the libraries that you will need to include, in this example these are core, highgui and imgproc:

OpenCVNetbeans5

OpenCVNetbeans6

Click Apply and OK. These steps once completed should be sufficient to enable the project to build correctly.

Step 6: Try it!

This is the “spots2.jpg’ image used in this test program (obviously, save the file in a place where your NetBeans project can find it):

spots2

And this screenshot shows the results of running the program, giving us the original colour image, the gray-scale equivalent image and the thresholded black and white image (and hence detect the number of spots in the jpg image):

OpenCVNetbeans7