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 [code]mkdir[/code] 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: [code language="cpp"]cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..[/code] opencv_codeblocks3 And then run [code]make[/code] command, which can take a while to complete: opencv_codeblocks9 Followed by the [code]sudo make install[/code] 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: [code language="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; } [/code] 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

Comments

Popular posts from this blog

Using the Supervisor Controller Pattern to access View controls in MVVM

Getting started with client-server applications in C++

How to send an e-mail via Google SMTP using C#