Установите затмение opencv

Я использую человечность 13.10, и я пытаюсь установить opencv на затмении. Я перехожу по этой учебной ССЫЛКЕ

Я не знаю, где моя библиотека. Это, что я получаю, когда я пытаюсь найти файлы.

       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:~$ 

Это не сообщает о пути к файлу. Я попробовал различные пути, но меня получающий всегда компиляцию ошибки

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)

Ошибка могла быть в пути lib. Как я могу решить это?

Править:

У меня были различные проблемы после установки. В особенности после перезагрузки и входа в систему я получил черный экран.

Как выражено по этой Ошибке сообщения Ubuntu 13.10 blackscreen

Я смог восстановить свою систему с помощью информации в этом блоге

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

Теперь кажется, что это частично работает.

Я могу выполнить этот пример кода:

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

}

Но я получаю и ошибка, когда я пытаюсь работать

#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>
0
задан 13 April 2017 в 15:24

1 ответ

Так как все предыдущие библиотеки в той же команде, кажется, были расположены успешно, я не думаю, что существует проблема с путем к библиотеке - более вероятно Ваша проблема - то, что Ваша командная строка имеет неуместное обратная косая черта в ней

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

Это должно работать при изменении этого на

... -lopencv_video -lopencv_features2d ...


Это должно также работать с пространством после -l

... -lopencv_video -l opencv_features2d ...

хотя страница справочника не рекомендует это:

   -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 обратная косая черта только законен в этом контексте как символ продолжения строки т.е.

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

(с новой строкой), также работал бы, я думаю, хотя было бы более естественно повредиться перед -l по-моему.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: