I am using ubuntu 13.10 and I am trying to install opencv on eclipse. I am following this tutorial LINK

I do not know where is my library. This what I obtain when I try to find the files.

       donbeo@donbeo-HP-EliteBook-Folio-9470m:~$ pkg-config --libs opencv
        -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann 
    -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml 
-lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab  

It does not report the file path. I have tried different paths but I receiving always compiling error

22:26:06 **** Incremental Build of configuration Debug for project machine_learning ****
make all 
Building target: machine_learning
Invoking: Cross G++ Linker
g++ -L/usr/local/lib -o "machine_learning"  ./src/prova.o   -lopencv_core  -lopencv_calib3d  -lopencv_objdetect  -lopencv_contrib  -lopencv_legacy  -lopencv_flann -lopencv_imgproc  -lopencv_highgui  -lopencv_ml  -lopencv_video -l\ opencv_features2d
/usr/bin/ld: cannot find -l opencv_features2d
collect2: error: ld returned 1 exit status
make: *** [machine_learning] Error 1

22:26:06 Build Finished (took 114ms)

The error could be in the lib path. How can I solve this?


I had various problems after the installation. In particular after reboot and login I obtained a black screen.

As expressed in this post Error Ubuntu 13.10 blackscreen

I have been able to restore my system using the information in this blog


Now seems that it is partially working.

I am able to run this example code:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>

using namespace cv;

int main()
    // Data for visual representation
    int width = 512, height = 512;
    Mat image = Mat::zeros(height, width, CV_8UC3);

    // Set up training data
    float labels[4] = {1.0, -1.0, -1.0, -1.0};
    Mat labelsMat(4, 1, CV_32FC1, labels);

    float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} };
    Mat trainingDataMat(4, 2, CV_32FC1, trainingData);

    // Set up SVM's parameters
    CvSVMParams params;
    params.svm_type    = CvSVM::C_SVC;
    params.kernel_type = CvSVM::LINEAR;
    params.term_crit   = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);

    // Train the SVM
    CvSVM SVM;
    SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params);

    Vec3b green(0,255,0), blue (255,0,0);
    // Show the decision regions given by the SVM
    for (int i = 0; i < image.rows; ++i)
        for (int j = 0; j < image.cols; ++j)
            Mat sampleMat = (Mat_<float>(1,2) << j,i);
            float response = SVM.predict(sampleMat);

            if (response == 1)
                image.at<Vec3b>(i,j)  = green;
            else if (response == -1)
                 image.at<Vec3b>(i,j)  = blue;

    // Show the training data
    int thickness = -1;
    int lineType = 8;
    circle( image, Point(501,  10), 5, Scalar(  0,   0,   0), thickness, lineType);
    circle( image, Point(255,  10), 5, Scalar(255, 255, 255), thickness, lineType);
    circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType);
    circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType);

    // Show support vectors
    thickness = 2;
    lineType  = 8;
    int c     = SVM.get_support_vector_count();

    for (int i = 0; i < c; ++i)
        const float* v = SVM.get_support_vector(i);
        circle( image,  Point( (int) v[0], (int) v[1]),   6,  Scalar(128, 128, 128), thickness, lineType);

    imwrite("result.png", image);        // save the image

    imshow("SVM Simple Example", image); // show it to the user


But I receive and error when I try to run

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main( int argc, char** argv )
  Mat image;
  image = imread( argv[1], 1 );

  if( argc != 2 || !image.data )
      printf( "No image data \n" );
      return -1;

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
  imshow( "Display Image", image );


  return 0;

Invoking: Cross G++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/prova.d" -MT"src/prova.d" -o "src/prova.o" "../src/prova.cpp"
../src/prova.cpp:1:16: fatal error: cv.h: No such file or directory
 #include <cv.h>

Since all the preceding libraries in the same command appear to have been located successfully, I don't think there is a problem with the library path - more likely your issue is that your command line has an out-of-place backslash in it

... -lopencv_video -l\ opencv_features2d ...

It should work if you change that to

... -lopencv_video -lopencv_features2d ...

It should also work with a space after the -l

... -lopencv_video -l opencv_features2d ...

although the man page does not recommend it:

   -l library
       Search the library named library when linking.  (The second
       alternative with the library as a separate argument is only for
       POSIX compliance and is not recommended.)

AFAIK the backslash is only legal in this context as a line-continuation character i.e.

... -lopencv_video -l\
opencv_features2d ...

(with a newline) would also work I think, although it would be more natural to break before the -l in my opinion.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.