Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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  
        donbeo@donbeo-HP-EliteBook-Folio-9470m:~$ 

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?

EDIT:

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

http://www.anickle.com/2014/01/19/ubuntu-13-10-intel-graphics-killed-by-opencv/

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
    waitKey(0);

}

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 );

  waitKey(0);

  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>
share|improve this question
add comment

1 Answer 1

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:

   -llibrary
   -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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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